我在这个问题上看到了类似的问题,但没有答案对我有用。我有一个布尔值,只要异步任务完成就会改变,但奇怪的是,ngonchages不会随时更改。以下是我的代码:
import {
Component,
OnChanges,
SimpleChange
} from '@angular/core';
export class HomePage implements OnChanges {
isLoaded: boolean;
constructor() {
this.isLoaded = false;
this.loadData();
}
loadData() {
setTimeout(() => {
this.isLoaded = true;
console.log(this.isLoaded);
}, 3000);
}
ngOnChanges(changes) {
console.log("There has been a change ", changes); //this is not firing
}
}
答案 0 :(得分:2)
ngOnChanges
是Angulars更改检测机制的生命周期回调,当Angulars数据绑定更改@Input()
时调用它
当你有
时@Input() isLoaded: boolean;
和
<home-page [isLoaded]="someValue">
父组件中的和someValue
已更改,然后更改检测更新isLoaded
并调用ngOnChanges()
。
对于您的情况,最简单的解决方案可能是使用getter而不是属性:
_isLoaded: boolean;
set isLoaded(value:bool) {
this._isLoaded = value;
this.doSomething(value)
}
get isLoaded() {
return this._isLoaded;
}
答案 1 :(得分:0)
作为输入处理的属性(检查更改的一部分)应标记为@Input
@Input()
isLoaded: boolean;