我使用PathLocationStrategy和Angular2 rc.4(路由器3.0.0-beta.2) .
我正在通过重定向重定向遇到奇怪的问题 .
Case 1: 首先清除浏览器历史记录/缓存文件
从 localhost:3000/login
成功登录后,路由器重定向到 localhost:3000
,这是预期的 .
注销后,路由器首先重定向到 localhost:3000/#
,然后重定向到 localhost:3000/login
.
Case 2: 与案例1的历史
从 localhost:3000/login
成功登录后,路由器重定向到 localhost:3000/#
.
注销后,路由器首先重定向到 localhost:3000/#
,然后重定向到 localhost:3000/login
.
我的问题是为什么 localhost:3000/#
出现在上述案例中,我怎么能摆脱它们 .
我的路线设置是
export const LoginRoutes = [
{
path: '',
redirectTo: '/myapp/dashboard',
pathMatch: 'full'
},
{ path: 'login',
component: LoginComponent
}
];
和
export const ProtectedRoutes: RouterConfig = [
{
path: '',
redirectTo: '/myapp',
pathMatch: 'full'
},
{
path: 'myapp',
component: RouteDispatcherComponent,
canActivate: [AuthGuard],
children: [
{
path: '',
redirectTo: '/myapp/dashboard',
pathMatch: 'full'
},
{
path: 'dashboard',
component: DashboardComponent
}
]
}
]
在我的登录组件中,我使用 this.router.navigate(['/myapp/dashboard']);
导航到我的仪表板页面 .
AuthGuard
就像
canActivate() {
if (this.authService.isAuthenticated()) {
return true;
}
this.router.navigate(['/login']);
return false;
}
顺便说一句,这发生在多个浏览器(chrome,firefox,safari)中 .
1 回答
我回来回答我自己的问题 . 事实证明,这不是与路由器设置相关的问题,而是我的html文件中的问题 .
我有
在我的HTML文件中并且有
在相应的ts文件中 .
所以,'s why it'首先重定向到
localhost:3000/#
然后再重定向到localhost:3000/login
.localhost:3000/#
实际上不是有效路线 . 默认情况下,重新加载整个角度实例并重定向到登录页面 .要修复它,要么将html更改为
并从logoutClick(event)
方法中删除
this.router.navigate(['login']);` 或只是将html更改为