簡體   English   中英

為什么在angularjs 2中更改布爾值時,ngOnchanges不會觸發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM