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应用程序没有 我建议使用此组件调试更改检测。将它添加到你的应用程序中,它将计

在关于angular的更改检测的好文章之后,我想调试checkAndUpdateView函数。然而,它从未被触发


我错过了什么?我试过使用最新的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应用程序没有。”这对我有帮助。谢谢