Я пытаюсь реализовать страницу чата в своем приложении.
В конструкторе я прошу все сообщения в базе данных:
this._DB
.getDocument("chats", this.favour.chatId)
.then(documentSnapshot => {
var chat = documentSnapshot.data();
for (var key in chat) {
chat.key = chat[key];
}
delete chat.key;
this.chat = chat;
})
.catch(error => {
console.log(error);
});
И приложение нормально загружает сообщения с помощью этого html:
<ion-item *ngFor="let messages of chat?.messages" class="chat" text-wrap [ngClass]="{'chat-partner' : messages?.askedName == localStorage?.name}">
{{messages.message}}
</ion-item>
Для реализации чата в реальном времени, который я вижу в документах, я должен использовать метод onSnapshot:
https://firebase.google.com/docs/firestore/query-data/listen
Тогда я использую эту функцию:
ionViewDidEnter() {
this._DB._DB
.collection("chats")
.doc(this.favour.chatId)
.onSnapshot(function(doc) {
this.chat = doc.data();
console.log(this.chat);
});
this.content.scrollToBottom();
}
Но проблема в том, что this.chat нормально показывается в консоли console.log, но html не обновляет его: - (
Я что-то не так делаю?
Заранее спасибо
PS: я вижу, может быть, это сбивает с толку в функции onSnapshot, которую я использую this._DB._DB, потому что в провайдере (_DB) у меня нет этой функции, и я делаю ее общедоступной, чтобы ее можно было использовать в другом месте. и может делать тесты.