强制调用ngOnDestroy和ngOnInit

问题描述 投票:2回答:1

我的组件不会被杀死,无法重新创建。

我转到'/ tabs / home / order',然后将网址更改为'/ tabs / home / wallet',订单页面不会被破坏,如果我返回到'tabs / home / order',页面调用ngOnInit与模块或路由结构有关吗?

什么触发了角度生命周期挂钩?

并且当URL更改时,我如何强迫它杀死并重新创建?

enter image description here

[如果有任何与模块结构有关的东西,则此项目的模块结构是垃圾,home模块被延迟加载,并将Wallet和Order组件一起加载,并且这些组件的生命周期挂钩未调用

angular routing routes ionic4 lazyload
1个回答
0
投票

您正在描述的看似意外的行为归因于离子。更具体地说,这是由于how Ionic deals with the life of a page

[导航到新页面时,Ionic会将旧页面保留在现有DOM,但将其从您的视图中隐藏并转换新页面。

...

由于这种特殊处理,ngOnInit和ngOnDestroy通常您认为应该使用的方法可能不会触发。

ngOnInit仅在每次新创建页面时才会触发,但不会导航回该页面时。例如,在每个标签界面中的页面只会调用每个页面的ngOnInit方法一次,但以后不会访问。 ngOnDestroy仅在页面“弹出”。

在不了解您的应用程序的情况下,我建议使用Ionic Lifecycle events而不是Angular的应用程序。听起来您可以将ngOnInit替换为ionViewWillEnter,然后将ngOnDestroy替换为ionViewWillLeaveionViewDidLeave

© www.soinside.com 2019 - 2024. All rights reserved.