Angular2、Zones vs ChangeDetectorRef强制对接收到的数据进行ui更新
我有一份英语申请书。它连接到信号服务并接收定期更新(每10秒一次)。这些更新通过发射器从angualr服务发送到组件。 我注意到当新数据进来时,ui并不总是更新,有时会有10秒左右的延迟 为了解决这个问题,我在组件中添加了对detectChanges()的调用Angular2、Zones vs ChangeDetectorRef强制对接收到的数据进行ui更新,angular,Angular,我有一份英语申请书。它连接到信号服务并接收定期更新(每10秒一次)。这些更新通过发射器从angualr服务发送到组件。 我注意到当新数据进来时,ui并不总是更新,有时会有10秒左右的延迟 为了解决这个问题,我在组件中添加了对detectChanges()的调用 this._signalrService.onGetData.subscribe((data: any) => { // update some data properties thi
this._signalrService.onGetData.subscribe((data: any) => {
// update some data properties
this._cd.detectChanges();
});
我也用分区来实现同样的目标
this._signalrService.onGetData.subscribe((data: any) => {
this._ngZone.run(() => {
// update some data properties
});
});
基本上,我希望在组件接收数据时强制进行ui更新
这两种方法中有一种是正确的吗?这个区域应该放在别的地方吗?我认为这是正确的方法
- 使用
当更新是包含问题中代码的组件的本地更新时this.\u cd.detectChanges
- 当更新也影响其他组件时,请使用
。一个常见的例子是使用this.\ngZone.run(…)
router.navigate(…)
- 而不是
this.\ngZone.run(…)
也可以使用。它会导致整个应用程序的更改检测运行ApplicationRef.tick()