訂閱了行爲主題的帖子組件並獲得帖子訂閱。第一次工作很好,但是當我轉到另一個頁面並返回時,我只能獲得帖子的最後一個值,但我需要第一次發佈所有帖子。行爲主題只發布路由更改中的最後一個值
崗位服務:
public getPosts(): BehaviorSubject<Post> {
let postSubject: BehaviorSubject<Post> = new BehaviorSubject<Post>(Post.EMPTY_POST);
this.db.list(this.getModelPath()).subscribe((posts: Post[]) => {
posts.forEach((result) => {
let post: Post = Post.fromObject(result);
postSubject.next(post);
// code ommited
});
return postSubject;
}
所預訂的組成部分:(文章列表組件)
public getPosts() {
this.showLoadingSpinner = true;
this._postService.getPosts().subscribe((post: Post) => {
if(Post.EMPTY_POST != post) {
this.showLoadingSpinner = false;
this.posts.push(post);
}
this.hasPostError = false;
}, (error) => {
this.loggerService.error(error);
this.showLoadingSpinner = false;
this.loggerService.log("error occured while getting posts.")
this.postErrorMessage = "error occured while getting posts.";
this.hasPostError = true;
},() => {
this.showLoadingSpinner = false;
if (!this.posts.length) {
this.postErrorMessage = "No posts to show!";
this.hasPostError = true;
}
})
}