出现这个错误通常是因为在Angular Zone之外异步修改了组件,导致Angular不再控制其生命周期。解决方法是使用NgZone.runOutsideAngular()
方法将异步任务移出Angular Zone,并使用NgZone.run()
将其包装在Angular Zone中。
示例代码:
import { Component, NgZone } from '@angular/core';
@Component({
selector: 'app-example',
template: `
{{ message }}
`
})
export class ExampleComponent {
message = 'Initial message';
constructor(private ngZone: NgZone) {}
updateMessage() {
this.ngZone.runOutsideAngular(() => {
// 异步任务
setTimeout(() => {
this.ngZone.run(() => {
this.message = 'New message';
});
});
});
}
}