如何实现可观察到的BehaviorSubject集合的子集收集

如何实现可观察到的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)); 
} 
+0

谢谢您的回答。这是一个好主意,但是,在这个片段中,'p'是阵列所以没有'isFavorite'财产 – bviale

+0

对不起,我错过了这一点。答案已更新... –

+0

是的,谢谢。如果我在地图后面添加'.share()',你知道区别吗? – bviale