问题描述:
项目中某个页面需要在两个组件tree,list之间通过eventEmit通信,点击tree,list查询数据。同时List界面中某个变量在页面中进行了双向绑定,最终发现点击tree后,双向绑定的数据无法更新,但通过console.log打印变量却又发现变量更新了。
问题解决:
订阅消息、回调函数等,有可能跳出了Angular的zone,所以需要注入ChangeDetector,显式地通知Angular框架进行更新,类似于Angular1.x中的apply(),具体做法如下
constructor(public eventEmitService: EventEmitService,
private changeDetectorRef: ChangeDetectorRef) {
}
ngOnInit() {
// 接收发射过来的数据
this.eventEmitService.eventEmit.subscribe((obj: any) => {
// 更新界面
this.changeDetectorRef.markForCheck();
});
}
网友评论