2017-05-17 7 views
1

일부 경우에는 .getValue()가 필요하기 때문에 BehaviorSubject가 있고 즐겨 찾기로 표시된 그림을 나타내는 Observable은 사진. BehaviorSubject의 일부로서 관찰 가능한 결합하는 청소 방법이,BehaviorSubject 컬렉션의 하위 집합으로 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)); 
     }); 
    }); 
} 

매우 "무거운"입니다 : 내 코드가 작동하고, 여기있다?

답변

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

답장을 보내 주셔서 감사합니다. 그러나이 스 니펫에서'p'는 배열 이므로'isFavorite' 속성이 없습니다. – bviale

+0

죄송합니다, 놓쳤습니다. 답변은 지금 업데이트됩니다 ... –

+0

예, 그 것입니다. 고마워요. 지도 뒤에'.share()'를 추가하면 어떤 차이가 있는지 알 수 있습니까? – bviale