如何在Angular 2中强制组件的重新渲染?

如何在Angular 2中强制组件的重新渲染? 为了debugging目的使用Redux,我想强制一个组件重新渲染它的视图,这是可能的吗?

问候

肖恩

渲染发生在更改检测之后。 要强制更改检测,以便已更改的组件属性值传播到DOM(然后浏览器将在视图中呈现这些更改),以下是一些选项:

  • ApplicationRef.tick() – 类似于Angular 1的$rootScope.$digest() – 即检查完整的组件树
  • NgZone.run(callback) – 类似于$rootScope.$apply(callback) – 即评估Angular 2区域内的callback函数。 我想,但我不确定,这最终会在执行callback函数后检查完整的组件树。
  • ChangeDetectorRef.detectChanges() – 类似于$scope.$digest() – 即只检查这个组件及其子组件

您可以将ApplicationRefNgZoneNgZone注入到组件中。

对于您的特定情况,如果只有一个组件发生了变化,我会推荐最后一个选项。

TX,find我需要的解决方法:

  constructor(private zone:NgZone) { // enable to for time travel this.appStore.subscribe((state) => { this.zone.run(() => { console.log('enabled time travel'); }); }); 

运行zone.run将强制组件重新呈现