Angular 离子2或离子2+中的ngOnInit与ionViewDidLoad;

Angular 离子2或离子2+中的ngOnInit与ionViewDidLoad;,angular,ionic2,ionic3,ionic4,Angular,Ionic2,Ionic3,Ionic4,我将使用哪一个初始化数据?为什么 ngOnInit() { this.type = 'category'; this.getData(); this.setData(); } ionViewDidLoad() { this.type = 'category'; this.getData(); this.setData(); } 这两个函数的工作方式相同,它们在视图最初加载到DOM时被调用 关于ionic2s生命周期挂钩的很棒的博客。ngOnIn

我将使用哪一个初始化数据?为什么

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

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

这两个函数的工作方式相同,它们在视图最初加载到DOM时被调用


关于ionic2s生命周期挂钩的很棒的博客。

ngOnInit
是Angular2调用的生命周期挂钩,表示Angular已经完成了组件的创建

ionViewDidLoad
与爱奥尼亚的
NavController
生命周期事件相关。它在页面加载后运行。此事件在创建每个页面时仅发生一次

基本上,两者都是初始化组件数据的好地方

但是要使用
ngOnInit
您需要实现Angular的
OnInit
类, 另一方面,只能为从
NavController
推送/弹出的组件定义
ionViewDidLoad


因此,我建议对
NavController
堆栈中的组件使用
ionViewDidLoad
,对其他组件使用
ngOnInit

ionViewDidLoad触发与NavController密切相关

如果您需要独立于NavController呈现的组件的挂钩(并非ionic 2应用程序中的所有组件都是页面),您应该使用而不是

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


无论如何,这些钩子的名字在大多数情况下都是不言自明的。

解释得很好。谢谢。每次刷新页面时都会触发哪些生命周期事件?回答得很好。我想补充一点,还有ionViewWillEnter。这两个离子页面事件之间的主要区别是…WillEnter()总是在组件呈现之前激发,而…DidLoad()不会对缓存的页面激发。