【发布时间】:2020-06-24 00:43:24
【问题描述】:
使用 Angular 9 和 Angular 路由器。
我尝试关注以下主题:Angular 2 different components with same route
我想要实现的是有 2 条路由 '',如果通过身份验证,则移动到 privateModule,如果没有,则移动到 publicModule。
基本上,
如果我通过身份验证并转到www.myApp.com www.myApp.com
我设置了一个 app-routing.module.ts =>
const routes: Routes = [
{
matcher: publicMatcher,
loadChildren: publicModule,
},
{
matcher: privateMatcher,
loadChildren: privateModule,
canActivate: [AuthPrivateGuard],
canActivateChild: [AuthPrivateGuard],
},
]
然后我有 2 个匹配器,但我不知道如何设置它们。由于 url 是 '' 没有什么可以消费的,我目前有一个无限循环。
export function privateMatcher(segments: UrlSegment[]): UrlMatchResult {
const key = localStorage.getItem('auth')
if (key && JSON.parse(key).accessToken) {
console.log('private')
return { consumed: segments }
}
return null
}
export function publicMatcher(segments: UrlSegment[]): UrlMatchResult {
const key = localStorage.getItem('auth')
if (!key || !JSON.parse(key)?.accessToken) {
console.log({ consumed: segments })
return { consumed: segments }
}
return null
}
我可能用错了,或者不是实现我想要的好方法?
【问题讨论】: