在Angular中,观察者不会自动更新的问题通常是由于没有正确使用ChangeDetectorRef
或NgZone
引起的。以下是一个解决方法的示例代码:
ChangeDetectorRef
手动触发变更检测:import { Component, ChangeDetectorRef } from '@angular/core';
@Component({
selector: 'app-example',
template: `
{{ data }}
`,
})
export class ExampleComponent {
data: string;
constructor(private cdr: ChangeDetectorRef) {}
updateData() {
this.data = '新数据';
this.cdr.detectChanges(); // 手动触发变更检测
}
}
NgZone
来包装异步操作:import { Component, NgZone } from '@angular/core';
@Component({
selector: 'app-example',
template: `
{{ data }}
`,
})
export class ExampleComponent {
data: string;
constructor(private ngZone: NgZone) {}
updateData() {
this.ngZone.run(() => {
this.data = '新数据';
});
}
}
以上代码示例中,ChangeDetectorRef
手动触发变更检测或使用NgZone
来包装异步操作都可以解决观察者不会自动更新的问题。
下一篇:Angular观察者订阅属性