url - Angular 2:多个组件的一条路径?
问题描述
我正在尝试在 Angular 8 上创建一个路由,其中某个路径具有公共和私有版本,因此如果我在 URL 中输入 /tracker,路由模块可以根据我是否登录或登录将我发送到私有/公共版本出去。
我已经尝试过使用 CanActivate 的 Guards,但是如果我返回 false,这只会停止导航,而且我特别需要两条路线具有相同的路径。这是我的路由模块:
path: '',
children: [
{
path: '',
canActivate: [AuthGuard],
component: TrackingListPrivateComponent
},
{
path: '',
component: TrackingListComponent
}
]
}
我希望能够在注销时在 URL 上输入 /tracker 并导航到 TrackingListComponent 并在登录后在 URL 上输入 /tracker 并导航到 TrackingListPrivateComponent。
解决方案
在路由配置中两次使用相同的路由不是一个好习惯,我什至不确定这在技术上是否可行。
在您的情况下,我只会为“/tracker”创建一个路由,并在中间组件中处理“登录”或“注销”状态:
{
path: 'tracker',
component: TrackingListComponent
}
在中间组件的模板中,您可以根据“loggedIn”状态调用公共或私有组件:
<app-tracking-list *ngIf="!loggedIn"></app-tracking-list>
<app-private-tracking-list *ngIf="loggedIn"></app-private-tracking-list>
您的中间 TrackingListComponent 需要一个返回已登录状态的函数:
class TrackingListComponent {
/** Return login status */
get loggedIn(): boolean {
return this.loginService.loggedIn;
}
}
推荐阅读
- python - 如何从请求中覆盖urllib3中的respect_retry_after_header?
- ios - 为什么我们不让类线程的每个属性都正常安全呢?
- amazon-web-services - 如何使用 Docker compose File 在 AWS 中进行部署
- javascript - 在 swiperjs 中延迟加载时如何显示质量较低的背景图像?
- node.js - Node.js 在执行过程中停止
- javascript - 如何在生成的 contentEditables div 的顶部和底部附加固定的 nonEditableContent?
- mysql - 如何处理特定项目的多个不同版本
- java - Java - 将 JSON 字符串数组解析为字符串数组
- php - Prestashop cookie 被缓存为旧值 - 这可能是 CDN 问题吗?
- python - 如何在不升级依赖项的情况下更新 Poetry 的锁文件?