をfirebaseするためにプッシュするとき、私はfirebase無限ループ
public getProblemList() {
this.problemList = this.db.list('problems-list');
return this.problemList.snapshotChanges().map(arr => {
//noinspection TypeScriptUnresolvedVariable
return arr.map(snap => Object.assign(snap.payload.val(), {$key: snap.key}));
});
}
から値のJSONを返し、私は、以前の方法から取得するリストに新しい値を追加するには、このメソッドを使用しています。このメソッドを持っていますいくつかの条件が満たされます。
public addNewProblem(problem: string) {
this.getProblemList().subscribe(item => {
const maxId = this._utilService.getMaxIdNewItems(item);
if (!this._utilService.isNullOrUndefined(maxId)) {
this.problemList.push({id: maxId + 1, name: problem});
}
});
}
しかし、このラインが呼び出されたときに、私は無限ループを得る何らかの理由:
this.problemList.push({id: maxId + 1, name: problem});
私はそれが私がのリストを変更するという事実とは何かを持っていると思います問題、および角度を変更として認識し、モデルを更新しようとします。
私は最近、snapshotChanges()
を使用してfirebaseのペイロードを取得する最新のバージョンのangularfireに移行しました。以前のバージョンではこの問題は発生しませんでした。
問題が発生する可能性のあるアイデアは何ですか?
が
どのように変更を探しているのかわかりません。 –
このポストが見つかりましたhttps://github.com/angular/angularfire2/issues/651とrxjs 'take'演算子を使用して私の問題を解決するようです –
ああ、はい!知っていると非常に便利です。 – ravo10