したがって、私は2つのテーブルを持っています。そのうちの1つはブロックを格納するユーザーです もう1つはこれらのブロックのデータを格納します。angularfire2 rxjsは動的更新で2つのテーブルからobservablesを結合します
私は自分のデータとブロックのリストを取得し、私のコンポーネント内のように、次のコードでDATAID
- user
- blocks
- block1
- blockSize
- blockOptions
- dataID
- ...
- data
- dataId1
- stuff ...
- ...
に従って正しくこれらを結合しようとしています、私は私のブロックとデータを取得しますが、データのノードがまだありますFirebaseObervableです。だから私は私のダムコンポーネントで非同期を使用する必要があります。私が求めているのは、これらを正しく組み合わせて非同期パイプを使用し、データをサブコンポーネントにプッシュするだけなのです。動的な変更を失うことはありません。
return this.db.list(`/user/${this.userId}/blocks`).switchMap((blocks:Block[]) => {
let blockData$ = blocks.map(block => {
return this.db.object(`/data/${block.blockOptions.dataID}`)
});
return Observable.combineLatest(blockData$,blocks, (bData,block) => {
block.data = bData;
return blocks;
});
})
テンプレートの例私は本当に正しい方向に任意のナッジを閉じ感じる事前に
//what I want to happen
*ngFor="let block of blocks | async">
<dumb-component [blockData] = "block.data"></dumb-component>
//what I have to do now
*ngFor="let block of blocks | async">
<dumb-component [blockData] = "block.data | async"></dumb-component>
おかげで
カートゥントありがとうございました。私は週末にそれを叩きつけた。私の脳は濃いので。 –
@ShaneMoore、あなたがアップルボートするか、答えが –
の場合、これは[this one](https://stackoverflow.com/a/45529139/2545680)とほぼ同じです –