紧跟在每次执行变更检测时的 ngOnChanges()
和 首次执行变更检测时的 ngOnInit()
后调用。
ngDoCheck() 可以检测一切数据的变化,鼠标移动等操作也会执行 ngDoCheck(),只有很少的调用是由于数据修改而触发。
有时,父组件传入的是一个对象,ngOnChanges无法检测到对象内部数据的变化,此时就可以使用ngDoCheck来识别。可以在组件初始化时保存该变量,然后在ngDoCheck中与最新的值进行比较:
ngOnInit(): void {
// 保存需要检测变化的变量
this.status = this.row?.status;
}
ngDoCheck(): void {
if (this.row && this.row.status !== this.status) {
this.status = this.row.status;
// 识别到变化后进行其他操作
...
}
}