如何在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()
– 即只检查这个组件及其子组件
您可以将ApplicationRef
, NgZone
或NgZone
注入到组件中。
对于您的特定情况,如果只有一个组件发生了变化,我会推荐最后一个选项。
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将强制组件重新呈现