RxJが比較的新しく、switchMap演算子を使用して複数の項目を処理した後に1つの操作を連鎖させることができません。複数の項目が処理された後にRxJSで単一の操作が実行される
シナリオ:バックエンドデータを使用してドロップダウンリストのオブジェクト配列を生成し、ドロップダウンの選択された値を設定するための1つの操作をチェーンします。
問題の説明に役立つ非正常なコードは次のとおりです。
this.sub = this.dataService.getUserData()
.switchMap((data) => Observable.from(data)) // create new data stream from inner data set
.map((data: any) => {
return { value: data._id, viewValue: data.firstName + ' ' + data.lastName };
}) // create data structure for drop down
.subscribe((data) => {
this.userDropDown.push(data); // this operation needs to run once per item emitted, and is working
this.patchFormData(); // <-- However, this only needs to run once
},
(error) => console.log("error", error)
);
私は問題をモーフィングが、新しいオブジェクト配列は、ソースデータをオフに基づいて取得問題、すなわちA)の全体を解決することができませんし、b)の完了後に、単一の操作を実行し、さまざまな演算子を試してみました。
大変助かりました。
は
- S.アローラ
、ありがとう - UPDATE:作業の最終バージョンは、ここでマイナーな構文の修正と以下の回答に基づいています。
this.sub = this.dataService.getUserData()
.map((data: any[]) => {
return data.map((x: any) => {
return { value: x._id, viewValue: x.firstName + ' ' + x.lastName };
});
})
.subscribe((data: any) => {
this.userDropDown = data;
this.patchFormData();
},
(error) => console.log("error", error)
);
は 'this.dataService.getUserData()'は配列を返しますか? – CozyAzure