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