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

How to fix ngOnInit() not fired after router.navigate

我有一个 Ionic 4 应用程序,我想在模块之间导航,但是当我 return 到初始页面时,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']" 而不是以编程方式

则工作正常

ngOnInit 在组件初始化时被调用,您的组件在您离开并return 时已经创建。

为了调用 OnInit,您需要在 return 访问页面时销毁组件或使用不同的技术来获取脚本 运行。

其他 Ionic 生命周期事件是:

ionViewDidLoad

ionViewWillEnter

ionViewDidEnter

ionViewWillLeave

ionViewDidLeave

ionViewWillUnload

我遇到了类似的问题,我用这个解决了

this.navigateTo('/url');

而不是这个

this.navigateTo('url');

在我的例子中,我不使用方括号,它只在某些情况下有效。