我有一个包含数据的Observable。
comments: Observable<Comment>
然后我调用getComments()方法。
当我滚动到列表的完成时,我调用getComments方法,以获取下一个较旧的注释。
但如果在我向下滚动的时候添加新评论,我会再次收到最早的评论,因为新闻评论会在开头添加。
实际上我正在使用它:
this.comments.concat(<Comment[]>data)
.distinct(x => x.id)
.subscribe()
但我不确定这是否是正确的方法。
答案 0 :(得分:0)
您可以使用BehaviorSubject
。每次都有新的评论,汇总数据。例如:
import { of } from 'rxjs/observable/of';
import { zip } from 'rxjs/observable/zip';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
comments = new BehaviorSubject([]);
getComments() {
// data from api
const newComments$ = of([
{ id: 6, name: 'f' },
{ id: 7, name: 'g' }
]);
zip(newComments$, this.comments)
.subscribe(([newComm, oldComm]) => {
this.comments.next(newComm.concat(oldComm));
});
}
ngOnInit() {
// since it's a behavior subject, you can subscribe like observable
this.comments.subscribe(x => {
// do whatever you want
})
}