を組み合わせて発信および着信、私は銀行口座と2種類の取引を持って想像することができます(練習目的のために作ったちょっとした使い方)。実際の口座残高を得るためにそれらを合計したいと思います。RxJsは、私は私は2つの私はAngular2に1つの値に結合したい観測とAngularfire2</p> <p>を持っているときに問題を解決しようとしている観測
テンプレート:データを提供すべきである
....
<div *ngFor="let account of accounts | async">
{{ (transactionService.getAccountBalance(account) | async)?.balance }}
</div
....
、最終的にサービス
getAccountBalance(account){
return Observable.zip(
this.getIncomingTransactionsForAccount(account), // FirebaseListObservable
this.getOutcomingTransactionsForAccount(account) // FirebaseListObservable
, (incoming, outcoming) => {
....
let result = {
account: account.$key,
balance: someCalculatedNumber
};
console.log(result); // result is correct there
return result;
}
)
}
この1つはFirebase上無限ループさせる(およびテンプレートのデータを表示しません)。私もObserver.merge()
といくつか他を試しましたが、私はまったく間違ったアプローチを使用しようとしていると思います。
ありがとうございました!
編集:
public getAllIncoming(account: IAccount){
return this.getIncomingTransactionsForAccount(account)
.scan((x, y) => {
console.log(x, y);
return 1;
}, 0);
}
は再び無限のクエリを生成します。
は、ちょうどすべての着信トランザクションをカウントするだけで一つのストリームを使用し、別の解決策を試してみました。
EDIT2:
私は上記と同じテンプレートを使用してもforkJoin
public getAccount2Balance(account: IAccount) {
return Observable.forkJoin([
this.getIncomingTransactionsForAccount(account),
this.getOutcomingTransactionsForAccount(account)
], (incoming, outcoming) => {
...
let result = {
account: account.$key,
balance: someCalculatedNumber
};
console.log(result);
return result;
})
}
を試みました。結果: 値はテンプレートに表示されず、結果は出力されません。
Observable.forkJoin([obs1、obs2、...])を試しましたか? – Brad
はい、私はしました。私もそれで成功しなかった。言ったように、私はちょうどエラーや無限のAPI呼び出しを取得していた。 : –
どのようなエラーがスローされるのですか?演算子 'Observable.forkJoin()'は必要な処理を行う必要があります – martin