How to add Observable<News> to an array of observable ?
newsArray: Observable<Array<any>>;
addNews(newsId: number) {
let news = this.newsService.getNewNews(newsId); // this returns a Observable<News> type.
//I want to add `news` to `newsArray` to display it in UI.
}
HTML:
<li *ngFor="let item of (newsArray | async)">
<div>{{item.Id}}: {{item.DataValue}}</div>
</li>
Any other operators to use?
I tried BehaviourSubject but it displays only one value at a time. I want to display add items that I am appending to an arrray.
Fan Cheung
You can use scan to accumulate news
news$:Observable<any>
loadMore$=new Subject<number>()
ngOnInit(){
this.news$=this.loadMore$
.switchMap((newsId)=>this.newsService.getNewNews(newsId))
.scan((acc,curr)=>{
acc.push(curr)
return acc
},[]).startWith(null)
}
addNews(newsId: number) {
this.loadMore$.next(newsId);
}
HTML
<li *ngFor="let item of (news$ | async)">
<div>{{item.Id}}: {{item.DataValue}}</div>
</li>
来源:https://stackoverflow.com/questions/48677327/rxjs-append-observable-to-observable-array-list-in-typescript