我将使用哪一个来初始化数据?
ngOnInit() {
this.type = 'category';
this.getData();
this.setData();
}
ionViewDidLoad() {
this.type = 'category';
this.getData();
this.setData();
}
答案 0 :(得分:63)
ngOnInit
是Angular2调用的生命周期钩子,表示Angular已完成创建组件。
ionViewDidLoad
与Ionic的NavController
lifeCycle事件有关。它在页面加载时运行。此事件仅在每个页面创建时发生一次。
基本上两者都是初始化组件数据的好地方。
但是要使用ngOnInit
,您需要实现Angular的OnInit
类,
另一方面,ionViewDidLoad
只能为从NavController
推送/弹出的组件定义。
所以我会说ionViewDidLoad
用于NavController
堆栈中的组件,ngOnInit
用于其他组件。
答案 1 :(得分:2)
两个函数的工作方式相同,最初将视图加载到DOM时会调用它们。
关于ionic2s生命周期钩子here的精彩博客。
答案 2 :(得分:2)
ionViewDidLoad触发与NavController密切相关。
如果您需要一个独立于NavController的组件的钩子(并非离子2应用程序中的所有组件都是页面),您应该使用angular lifecycle hooks而不是ionic navcontroller hooks。
现在,哪一个适合你,这取决于实施案例。
无论如何,所有这些钩子的名字大多数时候都是不言自明的。