У меня есть следующий фрагмент

Это мой main.html

<h2 class="txtcenter po-2text" style="padding-top:30px">
    {{title}}
</h2>

Это мой main.ts :

title: string;

ngOnInit() {
    var self = this;
    var ref = firebase.database().ref('schools/' + this.currentUserId());
    ref.orderByChild('title').on('value', function(dataSnapshot) {
        console.log("Title is: " + dataSnapshot.val().title);
        self.title = dataSnapshot.val().title;
    });
}

Несмотря на то, что обратный вызов запускается с некоторыми действительными данными, заголовок не обновляется автоматически. Что мне не хватает?

Любая помощь приветствуется!

4
Luigi Capogrosso 5 Окт 2018 в 12:08

1 ответ

Лучший ответ

Обнаружение угловых изменений работает на основе событий браузера, так как это обратный вызов события базы огня, который не будет запускать обнаружение изменения. Так что попробуйте следующее

Импортировать NgZone:

import { Component, NgZone } from '@angular/core';

Добавьте его в свой конструктор класса

constructor(public zone: NgZone, ...args){}

Запустите код с помощью zone.run:

ref.orderByChild('title').on('value', (dataSnapshot) => {
        console.log("Title is: " + dataSnapshot.val().title);
        this.zone.run(() => this.title = dataSnapshot.val().title;)
});
7
Anto Antony 5 Окт 2018 в 09:20