私はこのアプリケーションに組み込まれているコメントシステムを持っています。リストからコメントを削除すると、最後のアイテムを除いてすべてがDOMから削除されます。AngularFire2 Observables - ツリー内の最後に削除されたアイテムをUIでどのように考慮するか?
Firebaseのコメントツリーの最後の項目が削除されているため、ツリー全体が削除され、そのツリーを監視していた観測可能なストリームが中断されていると思われます。最後の項目は実際には削除されますが、項目はデータベースに存在しなくてもDOMに格納されます。
私のコンポーネントでこのようなことをどう扱うべきか正確にはわかりません。ここで
は、削除機能を呼び出す関数です:私のngOnInit(インサイド
/**
* Remove a message
*/
removeMessage(messageId) {
this._messages.removeMessage(this.requestId, messageId)
}
)、私はあなたがここに見ることができるようにストリーミングメッセージに加入しています:
this.getDiscussionObs = this._messages.getCheckRequestDiscussion(this.requestId).subscribe(messages => {
if(messages) {
this.discussionMessages = messages;
} else {
this.discussionMessages = [];
}
});
そしてここにはあります私のgetCheckRequestDiscussion()
関数:
getCheckRequestDiscussion(checkRequestId) {
// Get request ID
return this._af.database.list(`/request_discussions/${checkRequestId}`,
{
query: {
orderByChild: 'created_timestamp'
}
})
.switchMap(messages => {
return Observable.combineLatest(
messages.map(message => {
return this._af.database.object(`/users/${message.author_id}`)
}),
(...users) => {
messages.forEach((message, index) => {
users.forEach(user => {
if(message.author_id === user.$key) {
messages[index]['author'] = user;
}
})
})
return messages;
}
)
})
}
ここに私のプロバイダの削除機能があります:
DOMの更新を除いて、これまで私がこの問題に取り組んできたのは不思議ですが、ここではそうではありません。誰がここで何が起こっているかの手がかりを持っていますか?
ありがとうございます!
'getCheckRequestDiscussion'の実装がどのように見えるのでしょうか? – cartant
ちょっと@cartant、私は 'getCheckRequestDiscussion'関数を追加しました。何かそこに目立つ? –