我是Angular的新手,这个问题听起来很愚蠢。请忍受我。
我的ngOnInit
定义如下:
ngOnInit() {
this.rowData = this.studentService.getStudents();//Make http calls to populate data
}
在一次事件中,我需要重新加载数据时再次调用ngOnInit:
onSomeEvent(){
this.ngOnInit();
}
这样可以吗?
或者,如果ngOnInit()
是一种昂贵的方法,我应该写这行以再次调用http。
答案 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挂钩