我有一个页面,应该不会加载,除非用户登录(帐户详细信息)。但是,如果用户转到该直接URL,我更倾向于将他定向到登录页面。目前我正在做这件事:
ionViewWillEnter() {
if (notLoggedIn()){
this.navCtrl.navigateRoot('/tabs/(account:account/login)');
console.log('No user defined when at registration page, redirecting');
}
}我让控制台登录,但页面没有导航到正确的页面( URL会更改,但会显示旧页面)。
发布于 2018-10-31 07:46:25
一些离子生命周期事件不会在离子4中触发,我认为是因为切换到角度路由而不是离子路由。特别是在NavController文档中,它显示了ionViewCanEnter使用navCtrl.push方法,而不是navCtrl.navigateRoot或向前/向后的新方法(这是我在上面输入之前第一次尝试的方法)。
因此,为了解决这个问题,我使用了正常的角度路由生命周期保护,但坚持使用离子NavController来导航。我创建了一个新的生命周期防护,如下所示:
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): boolean {
if (this.userService.isLoggedIn()) { return true; }
this.navCtrl.navigateRoot('/tabs/(account:account/login)');
return false;
}效果很好。
对于同时学习离子和角度的任何人来说,都是很好的文档here
https://stackoverflow.com/questions/53057294
复制相似问题