我正在使用Angular6。我有一个名为UserService
的服务,该服务正在调用一个名为getUser()
的函数。
在该功能中,当用户拥有无效令牌时,我想导航到登录页面。
getUser(){
this.user = JSON.parse(sessionStorage.getItem('currentUser'));
if (!this.user) {
this.router.navigate(['login']);
this.toastr.error('Unknown Logged In User');
return false;
}
this.token = this.user.token;
return this.user;
}
我要在许多组件中调用getUser。例如在ActiveOrdersComponent
getCurrentUser() {
let loggedUser = this.userService.getUser();
if (loggedUser) {
this.info = {
currentUser: {
currentUserName: loggedUser.first_name + ' ' + loggedUser.last_name
}
}
}
return this.info.currentUser;
}
我正在使用LazyLoader。
我的原始路径是'/auth/orders/active'
目标登录路径为'/login'
函数getUser()
无法导航并进入无限循环。并且浏览器因多个控制台错误而冻结。
该函数返回false,并继续执行组件中的代码(由于我返回false,所以代码将中断。)
答案 0 :(得分:0)
我在几个小时前后都遇到了这个问题,我可以找到问题。遇到此问题时,会发生两件事:
当您要将用户重定向到另一个页面并使用Navigation方法时,您应该输入如下地址:
this.router.navigate(['/login']
有时您会在自己的组件中编写此代码。例如,您在登录组件中编写了上面的代码。这会导致刷新页面时面临无限循环。只是您应该在Navigation方法中更改地址以解决此问题。
我希望它对您有帮助