我的应用有2个功能:AppModule和UserModule。
UserModule - 适用于已登录的用户。
AppModule - 登录页面。
我在auth.service
中管理我的身份验证,我也有auth.guard.service
的守卫。
当我拨打auth.service.logOut()
时,用户已退出,但仍停留在面板中且路线未发生变化。
我还尝试添加this.router.navigate(['']);
,但用户仍然在/panel
路线。
这是我的退出方法:
logout() {
console.log("logging out..");
this.auth.logout();
this.userData = null;
this.isLoggedIn = false;
this.router.navigate(['']);
}
我在PanelComponent
内调用此方法。问题是用户留在PanelComponent中,并且没有被踢出"返回登录页面,即HomeComponent
。
app.routing.module.ts
@NgModule({
imports: [
RouterModule.forRoot([
{ path: '', component: HomeComponent },
])
],
exports: [
RouterModule
]
})
用户panel.routing.module.ts
@NgModule({
imports: [
RouterModule.forChild([
{
path: 'panel',
component: PanelComponent,
canActivate: [AuthGuard],
children: [
{
path: '',
children: [
{ path: 'userHome', component: userHomeComponent },
{ path: '', component: PanelHomeComponent }
]
}
]
}
])
],
当我刷新页面时,我会转回登录页面。为什么没有刷新就无法工作?
更新:虽然isLoggedIn
变量已更改,但我的主页会将我重定向回面板。
我的HomeComponent正在将我重新导向我的面板,尽管它不应该。
HomeComponent:
ngOnInit() {
//If he is alredy logged, redirect him to the panel
this.authService.login().subscribe(() => {
this.loaded = true;
if (this.authService.isLoggedIn) {
console.log("Navigated back to worker panel!");
this.router.navigate(['/worker-panel']);
}
});
在我的logOut()方法中,我将isLoggedIn
变量设置为false
。虽然,我的控制台会输出Navigated back to worker panel!
答案 0 :(得分:2)
如下所示更改父路由器,并在注销功能中使用this.router.navigate(['home']);
RouterModule.forRoot([
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
},
{ path: 'home', component: HomeComponent },
])