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

时间:2018-07-06 08:21:47

标签: angular typescript

我是Angular的新手,这个问题听起来很愚蠢。请忍受我。

我的ngOnInit定义如下:

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

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

onSomeEvent(){
 this.ngOnInit();
}

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

4 个答案:

答案 0 :(得分:7)

不,这不是一个好习惯。

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

ngOnInit() {
 this.onLoad();
}

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

onSomeEvent(){
 this.onLoad();
}

答案 1 :(得分:1)

更好的方法:

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()
}

答案 2 :(得分:1)

ngOnInit是生命周期挂钩,在初始化指令的数据绑定属性后会对其进行调用,因此,首次由angualr自身调用时,因此调用此方法会引起很多混淆,并签署不良代码,因此最好将代码插入ind ngOnInit并在需要时再次调用它。

ngOnInit() {
 this.refrechItems();
}

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

您可能会为所有其他生命周期挂钩考虑相同的事情

答案 3 :(得分:0)

请不要那样做! Angular有许多不同的 Lifecycle挂钩

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