离子2中的ngOnInit vs ionViewDidLoad

时间:2017-04-30 05:35:43

标签: angular ionic2

我将使用哪一个来初始化数据?

ngOnInit() {
    this.type = 'category';
    this.getData();
    this.setData();
}

ionViewDidLoad() {
    this.type = 'category';
    this.getData();
    this.setData();
}

3 个答案:

答案 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

现在,哪一个适合你,这取决于实施案例。

无论如何,所有这些钩子的名字大多数时候都是不言自明的。