我有以下代码段
这是我的 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;
});
}
即使使用一些有效数据触发了回调,标题也不会自动更新。我想念什么?
感谢您的帮助!
答案 0 :(得分:6)
角度变化检测基于浏览器事件进行,因为这是触发事件回调,因此不会触发变化检测。因此,请尝试以下
导入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;)
});