小编典典

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

all

如何强制组件在 Angular 2 中重新渲染?出于调试目的,我想强制一个组件重新渲染它的视图,这可能吗?


阅读 70

收藏
2022-06-24

共1个答案

小编典典

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

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

您将需要导入然后将ApplicationRefNgZoneChangeDetectorRef注入到您的组件中。

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

2022-06-24