2
我想弄清楚为什么下面的router.navigate([''])代码不会使用户登录组件。我只停留在家庭组件上。当我添加调试器;代码看起来好像进入了某种无尽的循环。角度router.navigate瓦特/路由守卫不工作时已组件
以下是流程: 用户访问站点并立即将其重定向到/ login,因为Route Guard失败。如果他们登录,则Route Guard通过,然后他们转到HomeComponent的['']。然后,当他们点击注销时,我认为导航到['']应该失败,只需进入/登录。出于某种原因,它停留在HomeComponent上,并且从不导航。
home.component.ts
logout() {
this.userService.logout();
this.router.navigate(['']);
}
user.service.ts
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
let url: string = state.url;
return this.verifyLogin(url);
}
verifyLogin(url: string): boolean {
if (this.userLoggedIn) { return true; }
this.router.navigate(['/login']);
return false;
}
logout() {
this.userLoggedIn = false;
}
APP-routing.module.ts
const routes: Routes = [
{ path: '' , component: HomeComponent, canActivate: [UserService]},
{ path: 'login', component: LoginComponent },
{ path: 'register', component: RegisterComponent },
{ path: '**' , redirectTo: '' }
];
是的,使用/登录似乎是解决方案..我想你不能尝试导航到你已经在的路线。它不通过相同的过程吗? –