在我的 Angular 应用程序中,我想到了这样一种情况,即只有当输入绑定(bind)到更改时才应调用 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);
}
}
使用 bool 属性:
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
Check whether the new value is the first value assigned.
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"
}
}
}
关于angular - 如何停止在 ngOnInit() 之前调用的 ngOnChanges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43111474/