【发布时间】:2018-01-13 22:28:54
【问题描述】:
我正在从 Firebase 获取数据,并且我希望我的组件视图应该在数据可用时更新,但它需要超过 15 sec 来更新视图上的数据。以下是我的组件和模板代码。
在我的情况下,数据可用性和视图绑定之间存在一些延迟,为什么?或者如何通知 Angular 数据更新以便立即更新视图?
@Component({
...
})
export class BoardComponent implements OnInit {
private db: firebase.database.Database;
public boards: Array<any>;
constructor(private route: ActivatedRoute,
private authService: AuthService) {
this.db = firebase.database();
this.boards = new Array<any>();
}
ngOnInit() {
this.loadBoards();
}
loadBoards() {
var ref = this.db.ref('/boards');
ref.on('child_added', (child) => {
console.log("Question added! adding data one by one");
var obj = child.val();
obj.key = child.key;
this.boards.push(obj);
});
}
}
模板:
...
<tr *ngFor="let item of boards">
<td>{{item.name}}</td>
</tr>
...
【问题讨论】:
-
这可能是因为 Angular 的默认 trackBy 函数跟踪对象的引用(由于数组相同,因此不会更改,this answer 解释得很好。
-
尝试使用
NgZone-ref.on('child_added', (child) => { NgZone.run(()=> {var obj = child.val();.. -
谢谢,
NgZone解决了我的问题。 -
@PARAMANANDAPRADHAN,很酷,将其发布为答案
标签: angular typescript firebase firebase-realtime-database