4

我有一个简单的 angular2 组件,它只包含一个带有一些数据绑定到它的ag-grid组件。

我的组件实现了 DoCheck 并且 ngDoCheck 方法在组件中实现。

export class AppComponent implements DoCheck 
{
    ngDoCheck() {
        console.log('do check..');
    }
} 

我意识到 ngDoCheck 函数总是在无休止地运行。

关于这个问题的任何解释。

4

2 回答 2

3

这个钩子的调用频率很高——在每个更改检测周期之后,无论更改发生在哪里。

是一个非常肮脏的循环,实际上甚至 Angular 本身都建议使用更合适的方式来实现自定义检查。

https://angular.io/docs/ts/latest/api/core/index/DoCheck-class.html

于 2017-02-14T15:52:32.393 回答
1

在我的情况下,ngAfterViewChecked 被无休止地调用,因为 sentry.js 对 console.log 进行猴子修补,从而触发更改检测。我拔掉了一半的头发,直到注意到下面的代码因为哨兵而导致循环。

ngAfterViewChecked () {

    console.log('Rendered');

}
于 2019-02-07T16:18:23.477 回答