在Angular 9中,可以使用ChangeDetectionRef
来解决存储的值永远不应该是NO_CHANGE
的问题。下面是一个包含代码示例的解决方法:
ChangeDetectionRef
类,并将其注入到组件的构造函数中:import { ChangeDetectorRef } from '@angular/core';
constructor(private cdr: ChangeDetectorRef) { }
detectChanges
方法来强制更新组件:this.cdr.detectChanges();
这将触发Angular的变化检测机制,使存储的值得到更新。
以下是一个完整的示例:
import { Component, ChangeDetectorRef } from '@angular/core';
@Component({
selector: 'app-example',
template: `
{{ data }}
`
})
export class ExampleComponent {
data: string;
constructor(private cdr: ChangeDetectorRef) { }
updateData() {
// 模拟异步获取数据
setTimeout(() => {
this.data = 'New Data';
this.cdr.detectChanges(); // 手动检测变化
}, 1000);
}
}
在上面的示例中,当点击按钮时,将异步获取数据,并将其赋值给data
变量。然后,通过调用detectChanges
方法来手动检测变化,以确保更新的值显示在模板中。
注意:使用detectChanges
方法来手动触发变化检测可能会影响性能,因此应该谨慎使用。只有在特定情况下需要手动更新组件时才使用它。
上一篇:Angular 9 - 从数据库中导入字体名称和字体URL
下一篇:Angular 9 - 错误: StaticInjectorError[Http]: StaticInjectorError[Http]: NullInjectorError: 没有提供者 Http