繁体   English   中英

我应该在Angular中再次调用ngOnInit()吗?

[英]Should I call ngOnInit() again in Angular?

我是Angular的新手,这个问题可能听起来很愚蠢。 请多多包涵。

我已经定义了我的ngOnInit如:

ngOnInit() {
 this.rowData = this.studentService.getStudents();//Make http calls to populate data
}

在一个事件中,我再次调用ngOnInit,因为我需要重新加载数据:

onSomeEvent(){
 this.ngOnInit();
}

这个可以吗? 或者如果ngOnInit()是一种代价高昂的方法,我应该再写一行来再次调用http。

不,这不是一个好习惯。

更好的方法是从ngOnInit调用一些方法,并在需要时重新调用相同的方法。 像这样-

ngOnInit() {
 this.onLoad();
}

onLoad() {
this.rowData = this.studentService.getStudents();//Make http calls to populate data
}

onSomeEvent(){
 this.onLoad();
}

更好的方法:

ngOnInit(){
this.loadData();
}

//load data

loadData(){
this.rowData = this.studentService.getStudents();
}

//on change event
ngOnChanges(){
this.loadData()
}

//capture data on other event
otherEvent(){
this.loadData()
}

ngOnInit是在指令的数据绑定属性被初始化之后调用的生命周期钩子,因此第一次由angualr调用它自己,所以回想一下这种方法会让其他人感到困惑并签署不良代码,所以最好打破代码insn ngOnInit并在需要时调用againg。

ngOnInit() {
 this.refrechItems();
}

public refrechItems(): void {
  // magic things
} 

你可以为所有其他生命周期钩子做同样的事情

请不要这样做! Angular有许多不同的Lifecycle钩子

https://angular.io/guide/lifecycle-hooks

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM