如何实现可观察到的BehaviorSubject集合的子集收集
问题描述:
我有图片的BehaviorSubject(因为我需要.getValue()在某些情况下),并且可观察到的代表图片标记为收藏,其中的一个子集图片。我的代码工作,在这里它是:如何实现可观察到的BehaviorSubject集合的子集收集
public pictures: BehaviorSubject<Array<Picture>>;
public favoritesPictures: Observable<Array<Picture>>;
constructor(private http: Http) {
this.pictures = new BehaviorSubject([]);
this.favoritesPictures = Observable.create((observer) => {
this.pictures.subscribe((pictures) => {
observer.next(pictures.filter((p) => p.isFavorite));
});
});
}
但是我喜欢这种感觉语法很“重”,是有绑定可观察到的BehaviorSubject的子集的更清洁的方式?
答
你可以尝试以下。 BehaviorSubject是可观察的。
public pictures: BehaviorSubject<Array<Picture>>;
public favoritesPictures: Observable<Array<Picture>>;
constructor(private http: Http) {
this.pictures = new BehaviorSubject([]);
this.favoritesPictures = this.pictures.map((a) => a.filter((p) => p.isFavorite));
}
谢谢您的回答。这是一个好主意,但是,在这个片段中,'p'是阵列
对不起,我错过了这一点。答案已更新... –
是的,谢谢。如果我在地图后面添加'.share()',你知道区别吗? – bviale