【发布时间】:2017-06-15 04:28:36
【问题描述】:
我有一个应用程序,它需要将经过身份验证的用户组件和来宾用户组件分开。但我需要,这两个组件都将通过“/”路由加载。我写了
{
path: 'desktop',
loadChildren: 'app/member/member.module#MemberModule',
canActivate: [LoggedInGuard],
},
{
path: '',
loadChildren: 'app/guest/guest.module#GuestModule',
canActivate: [GuestGuard],
},
而且它有效。但是如何使两个组件都通过相同的 url 加载呢?
我曾尝试为成员的模块路由写path: '',但没有执行第二个路由规则。
以下是守卫代码:
LoggedInGuard:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
if(this.sessionService.isLoggedIn()) {
return true;
} else {
return false;
}
}
GuestGuard:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
if(!this.sessionService.isLoggedIn()) {
return true;
} else {
return false;
}
}
这里是一个笨蛋:http://embed.plnkr.co/VaiibEVGE79QU8toWSg6/
我应该如何正确地做到这一点?谢谢
【问题讨论】:
-
错误是什么?
-
对不起。没有错误。但只执行了第一个路由器规则
-
如果没有错误并且满足第一个路由器规则,那么您的 LoggedInGuard 返回 true?
-
我试图从 LoggedInGuard 返回 false,从 GuestGuard 返回 true。但是第二条规则仍然没有执行
-
我已经创建了一个 plunker 草图:embed.plnkr.co/VaiibEVGE79QU8toWSg6