如何修复router.navigate后未触发的ngOnInit()

时间:2019-05-12 03:00:57

标签: angular ionic4

我有一个Ionic 4应用程序,我想在模块之间导航,但是返回初始页面时ngOnInit方法无法运行。

我在app-routin.module中有两个页面

  { path: 'Home', loadChildren: './pages/home/home.module#HomePageModule' },
  { path: 'Login', loadChildren: './pages/login/login.module#LoginPageModule' },

“登录”页面内部有一个按钮(Button1),该按钮执行以下代码

this.router.navigate(['/Home']);

首页内部有一个按钮(Button2),该按钮执行以下代码

this.router.navigate(['/Login']);

我将此页面写在浏览器URL'http://localhost:8100/Login'中。

console log => 'enter to LOGIN ngOnInit'

当我按下Button1时

console log => 'enter to HOME ngOnInit'

当我按下Button2时

nothing log

当我按下Button1时

console log => 'enter to HOME ngOnInit'

我尝试在this.zone.run内部运行导航,但仍然无法正常工作

编辑: 如果使用[routerLink]="['/Login']"而不是通过编程方式运行,则可以正常工作

2 个答案:

答案 0 :(得分:1)

我有一个类似的问题,我用这个解决了

this.navigateTo('/url');

代替此

this.navigateTo('url');

就我而言,我不使用方括号,它仅在某些情况下有效。

答案 1 :(得分:0)

在组件初始化时会调用ngOnInit get,并且当您离开并返回该组件时已经创建了该组件。

要调用OnInit,您需要销毁组件或使用其他技术来使您的脚本在返回页面时运行。

其他离子生命周期事件是:

No wrap - bottom of <body>