私は、メッセージのストリームをサブスクライブするサンドボックスを持っています。そのストリームをフィルタリングして、別のコンポーネントで指定されたルートパラメータを使用して特定のユーザーと送受信されたメッセージを探したいとします。RxJS観測可能なマージ角度
messages.sandbox.ts:
messages$: Observable<Array<Message>> = this.store.select(state => state.data.messages);
fetchReceived(id: string): Observable<Array<Message>> {
return this.messages$.map((messages: any) => {
return messages.filter((message: Message) => {
return message.recipientId == id;
});
});
}
fetchSent(id: string): Observable<Array<Message>> {
return this.messages$.map((messages: any) => {
return messages.filter((message: Message) => {
return message.userId == id;
})
})
}
messages.detail.container.ts
sentMessages$ = new Observable<Array<Message>>();
receivedMessages$ = new Observable<Array<Message>>();
matchingMessages$ = new Observable<Array<Message>>();
ngOnInit() {
this.route.params.subscribe((params: Params) => {
this.sentMessages$ = this.sb.fetchReceived(params['id']);
this.receivedMessages$ = this.sb.fetchSent(params['id']);
this.matchingMessages$ = Observable.merge(this.sentMessages$, this.receivedMessages$);
});
}
this.matchingMessages $だけ私はそれを知ってthis.sentMessages this.receivedMessages $が含まれているようですテンプレートで問題なく使用できるので、$はnullではありません。
Observablesのマージで何か不足していますか? userIdまたはrecipientIdのいずれかをフィルタリングする単一のfetchMessagesメソッドを作成する方が良いでしょうか?もしそうなら、私はそれについてどのように行くだろうか?
ありがとうございます!
おかげでブランドン!答えと説明の両方のため。私はRxjsの新人です。残りのサンドボックスのコードパターンとよく似た2番目のソリューションを使用して終了します –