ChangeDetectorRef.markForCheck()和之间有什么区别ChangeDetectorRef.detectChanges()?
我只在SO上找到了关于NgZone.run()这两个函数之间的差异的信息,但不是这两个函数之间的区别.
对于仅提及文档的答案,请说明一些实际场景,以选择其中一个.
我有一个一般性的角度问题:
为什么async使用角管cdr.markForCheck()而不是cdr.detectChanges()?
我认为这两种“风格”有两个主要区别:
markForCheck()标记要检查的路径直到根组件 -要更新的内容markForCheck()让变化检测发生在当前或下一个周期 -计时我的想法或问题:
为什么我们需要检查根的整个路径(在async管道中)?为什么不只是当前组件?( ) - 这与要更新的内容detectChanges()有关
为什么只标记(对于当前/下一个周期 - 使用markForCheck()ngZone)?为什么不立即检测变化?( ) 这与时间detectChanges()有关
如果没有 ngZone 异步触发器/没有异步操作怎么办?那么视图更新不会发生吗?
async如果我们改为使用管道会发生什么detectChanges()?
异步管道:
private _updateLatestValue(async: any, value: Object): void {
if (async === this._obj) {
this._latestValue = value;
this._ref.markForCheck();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
async请不要解释每种方法的作用,因为我在文档中阅读了很多次,并且从角度来看我无法理解。对我来说,重要的是要知道更新内容和时间安排的原因。