在我的angular应用程序中,我提出了一种情况,只有当输入绑定到更改时,才应该调用ngOnchanges.那么,有没有办法在ngOnInit之前阻止ngOnChanges的执行.有没有办法做到这一点.
在我的angular应用程序中,我提出了一种情况,只有当输入绑定到更改时,才应该调用ngOnchanges.那么,有没有办法在ngOnInit之前阻止ngOnChanges的执行.有没有办法做到这一点.
你无法阻止这种行为,但你可以:
class Foo implements OnChanges,OnInit,OnDestroy{
onChanges = new Subject<SimpleChanges>();
ngOnInit(){
this.onChanges.subscribe((data:SimpleChanges)=>{
// only when inited
});
}
ngOnDestroy(){
this.onChanges.complete();
}
ngOnChanges(changes:SimpleChanges){
this.onChanges.next(changes);
}
}
class Foo implements OnChanges,OnInit{
initialized=false;
ngOnInit(){
// do stuff
this.initialized = true;
}
ngOnChanges(changes:SimpleChanges){
if(this.initialized){
// do stuff when ngOnInit has been called
}
}
}
SimpleChanges
API您还可以判断SimpleChange.isFirstChange()
方法:
isFirstChange() : boolean
class Foo implements OnChanges,OnInit{
@Input()
bar:any;
ngOnInit(){
// do stuff
}
ngOnChanges(changes:SimpleChanges){
if(!changes["bar"].isFirstChange()){
// do stuff if this is not the initialization of "bar"
}
}
}