[英]Why is ngOnchanges not firing when a boolean value changed in angularjs 2
我在這個問題上看到了類似的問題,但沒有答案對我有用。 我有一個布爾值,只要異步任務完成就會改變,但奇怪的是,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
}
}
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;
}
作為輸入處理的屬性(檢查更改的一部分)應使用@Input標記
@Input()
isLoaded: boolean;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.