私はAngler 4プロジェクトでNGRXプラットフォームを使用しています。私はRXJS +5を使用しています。オブザーバブルストリームから1つの配列を出力するにはどうすればよいですか?
コンポーネントの初期化時に、私は自分のストアからオブジェクトの配列を選択しています。私は、この観測可能なデータを私の店のデータが変更されるたびに1つの配列で出力したいと思っています。
私は配列をうまく解凍していますが、観測可能なストリームを一度に1つの配列にパッケージ化してしまうと、問題が発生します。
私は以下のことをしたいと思いますが、サブスクリプションが決して完了しないため、これは決して値を出しません。私の知る限り、toArray
は完了時にのみ発光します。
this.addedProducts$ = this._store.select(s=>s.order.selectedProducts)
.flatMap(prods=>prods) //emits an observable for each product in store
.map(prod=>prod._id) //returns the id for each product
.toArray(); // I would like this to be an Observable<string[]>
代わりに、私はこのような何かを行っている:
this.addedProducts$ = this._store.select(s=>s.order.selectedProducts)
.flatMap(prods=>prods)
.map(prod=>prod._id)
.scan((acc, value) => {
acc.push(value);
return acc;
}, [])
しかし、これは新しい配列に配列に_idを追加するごとに1回の反復を発します。私はこれを観察して、その中のすべての値を持つ単一の配列を出力したいと思います。
どうすればこの問題を解決できますか?
なぜあなたはそれを好きではありませんか?あなたは単に 'map(prods => prods.map(p => p.id))'と言うことができます – Skeptor