gpt4 book ai didi

angular - 如何停止在 ngOnInit() 之前调用的 ngOnChanges

转载 作者:太空狗 更新时间:2023-10-29 16:53:09 25 4
gpt4 key购买 nike

在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com