我有一个简单的 angular2 组件,它只包含一个带有一些数据绑定到它的ag-grid组件。
我的组件实现了 DoCheck 并且 ngDoCheck 方法在组件中实现。
export class AppComponent implements DoCheck
{
ngDoCheck() {
console.log('do check..');
}
}
我意识到 ngDoCheck 函数总是在无休止地运行。
关于这个问题的任何解释。
我有一个简单的 angular2 组件,它只包含一个带有一些数据绑定到它的ag-grid组件。
我的组件实现了 DoCheck 并且 ngDoCheck 方法在组件中实现。
export class AppComponent implements DoCheck
{
ngDoCheck() {
console.log('do check..');
}
}
我意识到 ngDoCheck 函数总是在无休止地运行。
关于这个问题的任何解释。
这个钩子的调用频率很高——在每个更改检测周期之后,无论更改发生在哪里。
是一个非常肮脏的循环,实际上甚至 Angular 本身都建议使用更合适的方式来实现自定义检查。
https://angular.io/docs/ts/latest/api/core/index/DoCheck-class.html
在我的情况下,ngAfterViewChecked 被无休止地调用,因为 sentry.js 对 console.log 进行猴子修补,从而触发更改检测。我拔掉了一半的头发,直到注意到下面的代码因为哨兵而导致循环。
ngAfterViewChecked () {
console.log('Rendered');
}