我的组件不会被杀死,无法重新创建。
我转到'/ tabs / home / order',然后将网址更改为'/ tabs / home / wallet',订单页面不会被破坏,如果我返回到'tabs / home / order',页面调用ngOnInit与模块或路由结构有关吗?
什么触发了角度生命周期挂钩?
并且当URL更改时,我如何强迫它杀死并重新创建?
[如果有任何与模块结构有关的东西,则此项目的模块结构是垃圾,home模块被延迟加载,并将Wallet和Order组件一起加载,并且这些组件的生命周期挂钩未调用
您正在描述的看似意外的行为归因于离子。更具体地说,这是由于how Ionic deals with the life of a page。
[导航到新页面时,Ionic会将旧页面保留在现有DOM,但将其从您的视图中隐藏并转换新页面。
...
由于这种特殊处理,ngOnInit和ngOnDestroy通常您认为应该使用的方法可能不会触发。
ngOnInit仅在每次新创建页面时才会触发,但不会导航回该页面时。例如,在每个标签界面中的页面只会调用每个页面的ngOnInit方法一次,但以后不会访问。 ngOnDestroy仅在页面“弹出”。
在不了解您的应用程序的情况下,我建议使用Ionic Lifecycle events而不是Angular的应用程序。听起来您可以将ngOnInit
替换为ionViewWillEnter
,然后将ngOnDestroy
替换为ionViewWillLeave
或ionViewDidLeave
。