我在我的同事detectChanges()和markForCheck()的一些代码中发现。他们使用默认的变化检测策略,没有NgZones。据我所知,只有在使用OnPush策略或NgZones时,才需要使用detectChanges和markForCheck。
据我所知,这些方法的用例如下: detectChanges,=>,如果你使用的是runOutsideAngular,比如(),或者像getElementById(),以及manipulate和element (在angular中应该避免)。
如果对象正在发生变异,则使用markForCheck => + OnPush策略
那么Angulars ()和markForCheck()与默认的变化检测策略相关吗?
发布于 2021-01-29 18:57:36
是的。
如果您没有使用ChangeDetectionStrategy.OnPush
或ChangeDetectorRef
,那么这两种方法都不会做任何事情。
但是,即使使用默认的更改检测,也可以分离更改检测器。在这种情况下,您可以使用detectChanges()
手动检查视图。
阅读有关更改检测here的更多信息。
https://stackoverflow.com/questions/65952760
复制相似问题