Angular6中使用eventEmit在组件间通信后数据绑定无

2018-11-01  本文已影响0人  Liekkasz

问题描述:
项目中某个页面需要在两个组件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();
        });
    }
上一篇下一篇

猜你喜欢

热点阅读