离子2中的ngOnInit vs ionViewDidLoad

sai*_*aif 28 ionic2 ionic3 angular ionic4

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

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

ionViewDidLoad() {
    this.type = 'category';
    this.getData();
    this.setData();
}
Run Code Online (Sandbox Code Playgroud)

nao*_*omi 66

ngOnInit 是一个生命周期钩子,由Angular2调用,表示Angular完成了创建组件.

ionViewDidLoad与Ionic的NavControllerlifeCycle事件有关.它在页面加载时运行.此事件仅在每个页面创建时发生一次.

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

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

所以我想说使用堆栈中的ionViewDidLoadfor组件NavControllerngOnInit其他组件.

  • 很好的答案。我想补充一下还有*ionViewWillEnter*。两个 ion-page 事件之间的主要区别在于 ...WillEnter() 始终在组件渲染之前触发,而 ...DidLoad() 对于缓存的页面**不会**触发。https://blog.ionicframework.com/navigating-lifecycle-events/ (2认同)