如何修复 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');
在我的例子中,我不使用方括号,它只在某些情况下有效。
我有一个 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');
在我的例子中,我不使用方括号,它只在某些情况下有效。