Javascript 为什么在angularjs 2中更改布尔值时ngOnchanges不触发

Javascript 为什么在angularjs 2中更改布尔值时ngOnchanges不触发,javascript,angular,Javascript,Angular,我在这个问题上见过类似的问题,但没有一个答案对我有用。我有一个布尔值,每当异步任务完成时它就会改变,但奇怪的是ngonchages不会在任何时候改变。下面是我的代码: import { Component, OnChanges, SimpleChange } from '@angular/core'; export class HomePage implements OnChanges { isLoaded: boolean; constructor(

我在这个问题上见过类似的问题,但没有一个答案对我有用。我有一个布尔值,每当异步任务完成时它就会改变,但奇怪的是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
    }
}
被视为输入的属性(检查更改的一部分)应标记为@input

@Input()
isLoaded: boolean;

ngochanges
是Angulars更改检测机制的生命周期回调,当Angulars数据绑定更改
@Input()
时调用它

当你有

@Input() isLoaded: boolean;


查看
绑定
/
@input
属性时,
isLoaded
应该在那里。我知道getter和setter,但这在这种情况下不起作用。应用程序需要监视isLoaded值,以便在服务器响应后可以操作DOM。为什么您认为setter没有等待isLoaded值?我现在必须使用getter和setter。但我还是要读更多关于onChanges的内容。
<home-page [isLoaded]="someValue">
_isLoaded: boolean;
set isLoaded(value:bool) {
  this._isLoaded = value;
  this.doSomething(value)
}
get isLoaded() {
  return this._isLoaded;
}