【发布时间】:2019-12-14 06:44:46
【问题描述】:
我将从 我在 StackOverflow 上看到类似问题的概念开始这个问题,但这个问题只回答了差异。
我要问的是我应该根据情况使用什么以及一种或另一种方法可能有什么缺点。
我知道detectChanges 对元素及其子元素运行即时更改检测周期,同时markForCheck 仅将当前元素及其祖先标记为脏,并且应在下一个更改检测周期检查它们。
我问这个主要是因为我觉得我不应该总是在异步调用中使用markForCheck。
例如,我有一个InputComponent,它是常规 HTML 输入的包装器。这个InputComponent 启用了ChangeDetectionStrategy.OnPush。
当我对服务器进行异步调用并获取数据时,我需要在 InputComponent 上运行更改检测以更新选项列表,我有两个选项。
首先(我觉得我应该使用的)是detectChanges,因为它只会对这个确切的组件应用检查,而markForCheck 会导致检查整个树枝。
那么我应该使用什么,我需要使用markForCheck 吗?为什么?
【问题讨论】:
标签: angular typescript performance angular-changedetection