Angular 我的断点在角度';在checkAndUpdateView()上未触发的更改检测
在关于angular的更改检测的好文章之后,我想调试checkAndUpdateView函数。然而,它从未被触发Angular 我的断点在角度';在checkAndUpdateView()上未触发的更改检测,angular,angular-changedetection,Angular,Angular Changedetection,在关于angular的更改检测的好文章之后,我想调试checkAndUpdateView函数。然而,它从未被触发 我错过了什么?我试过使用最新的Chrome和Firefox。那篇文章很老,从2018年开始,Angular就引入了Ivy编译器,它彻底检修了Angular的内部结构。如果您使用的是Angular 9或更高版本,则不会命中此断点。我测试了一个角度为7、8和9的应用程序。版本7和8达到了断点,Angular 9应用程序没有 我建议使用此组件调试更改检测。将它添加到你的应用程序中,它将计
我错过了什么?我试过使用最新的Chrome和Firefox。那篇文章很老,从2018年开始,Angular就引入了Ivy编译器,它彻底检修了Angular的内部结构。如果您使用的是Angular 9或更高版本,则不会命中此断点。我测试了一个角度为7、8和9的应用程序。版本7和8达到了断点,Angular 9应用程序没有 我建议使用此组件调试更改检测。将它添加到你的应用程序中,它将计算更改检测周期 debug-change-detection.component.ts:
import { Component, NgZone } from '@angular/core';
@Component({
selector: 'app-debug-change-detection',
template: '<p class="number">{{check()}} zone checks</p>',
styles: [`
:host {
position: absolute;
left: 10px;
bottom: 0;
display: block;
}
.number {
display: block;
}
`]
})
export class DebugChangeDetectionComponent {
count = 0;
constructor(private zone: NgZone) { }
check() {
this.zone.runOutsideAngular(() => {
setTimeout(() => this.count = this.count + 1);
});
return this.count;
}
}
从'@angular/core'导入{Component,NgZone};
@组成部分({
选择器:“应用程序调试更改检测”,
模板:“{{check()}}区域检查
”,
风格:[`
:主持人{
位置:绝对位置;
左:10px;
底部:0;
显示:块;
}
.号码{
显示:块;
}
`]
})
导出类DebugChangeDetectionComponent{
计数=0;
构造函数(专用区域:NgZone){}
检查(){
此.zone.runOutsideAngular(()=>{
setTimeout(()=>this.count=this.count+1);
});
返回这个.count;
}
}
您能否提供更多上下文并共享代码?哪个组件,如何配置,它的代码,你如何尝试触发检测等等。哦,我明白了。我已经有了所有这些,我只是想手动调试它,以了解引擎盖下发生了什么。自从Ivy以来,没有办法在浏览器中调试它?我认为没有一个断点可以帮助您了解引擎盖下发生的事情。这相当复杂……嗯,在常春藤出现之前是这样的。checkAndUpdateView是我要找的。为什么断点不再阻止它?我怀疑他们改变了整个变化检测机制。我只是在谷歌上搜索了“常春藤变化检测断点”,发现了这个:同一作者:我也发现了:)我以为你知道得更多。我接受你的回答,“版本7和8达到了断点,Angular 9应用程序没有。”这对我有帮助。谢谢