我的组件没有被杀死,可以再次创建。
我转到“ / tabs / home / order”,将网址更改为“ / tabs / home / wallet”后,订单页面不会被破坏,如果我返回“ tabs / home / order”页面执行ngOnInit 与模块或路由结构有关吗?
什么触发了角度生命周期挂钩?
当URL更改时,如何强制其杀死并重新创建?
如果有任何与模块结构相关的内容,则该项目的模块结构是垃圾,home模块被延迟加载,并将Wallet和Order组件一起加载,并且这些组件的生命周期挂钩未调用
答案 0 :(得分:2)
您描述的看似意外的行为是由于Ionic引起的。更具体地说,这是由于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
。
文档中的下一部分是一些有用的guidance for each lifecycle method