1

我有一个 BehaviorSubject 图片(因为在某些情况下我需要 .getValue() )和一个 Observable 表示标记为收藏的图片,它是图片的子集。我的代码有效,这里是:

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));
        });
    });
}

但是我觉得这种语法很“重”,有没有更简洁的方法将 Observable 绑定为 BehaviorSubject 的子集?

4

1 回答 1

2

您可以尝试以下。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));
}
于 2017-05-17T09:08:50.513 回答