angular - 如何使用相同的角度路线在 2 个不同的路由器插座中渲染 2 个不同的组件?
问题描述
我有 2 个视图,一个用于代表,一个用于管理员,当 /admin 路由激活时,管理员路由需要在主部分中呈现仪表板以及侧边栏部分中的管理侧边栏,我查看了一些youtube 视频和文档,用于有角度的命名路线,没有骰子。这是代码的简化版本
应用程序路由模块
const routes: Routes = [
{
path: 'admin',
canActivate: [AdminGuard],
component: AdminDashComponent
},
{
path: 'admin',
canActivate: [AdminGuard],
component: AdminSidebarComponent,
outlet: 'sidebar'
}
];
模板
<app-banner
[userIconSwitch]="auth.loggedIn"
(userIconEvent)="userIconClicked()"
(menuClicked)="bannerMenuClicked()">
Datrix 2.0
</app-banner>
<mat-sidenav-container class="example-container">
<mat-sidenav #sidenav mode="side" [(opened)]="opened">
<img src="https://i.ibb.co/6R6pcMm/MRG-Updated-Logo.jpg" alt=""/>
<br />
<div class="spacer"></div>
</mat-sidenav>
<router-outlet name="sidebar"></router-outlet>
<mat-sidenav-content>
<router-outlet></router-outlet>
</mat-sidenav-content>
</mat-sidenav-container>
编辑
未命名的路线正在工作,而命名的路线则没有。
控制台中没有错误。
解决方案
要直接路由到router-outlets
您的 url 应该是这样的:
http://localhost:4200/admin(侧边栏:admin)
如果您通过routerLink
属性路由:
<a
[routerLink]="[{ outlets: { primary: ['admin'], sidebar: ['admin'] } }]">
Navigate to admin on both outlets
</a>
stackblitz上的演示
您可以在Angular 文档中找到有关辅助路线导航的更多信息
URL 中有趣的部分遵循...:
管理员是主要导航。
括号围绕辅助路由。
- 二级路由由一个出口名称(侧边栏)、一个冒号分隔符和二级路由路径(admin)组成。
推荐阅读
- python - 视图中的 Django 过滤器
- html - 如何使用 css 根据 td 宽度调整 th 的宽度
- json - 如何在 Inno Setup 中将变量放入 JSON 字符串中
- mysql - 查找 MySQL 表之间的差异,仅返回特定列已更改的行
- uwp - UWP 与桌面桥包构建自动化与 MSbuild
- excel - Excel VBA - 将行复制到不同列中的新工作表
- php - 使用未定义的常量消息 - 假定为“消息”
- c++ - 带有基类构造函数的 gmock
- python - Apache 在公共路由器 ip 和内部服务器 ip 的情况下运行 wsgi 模块(django 应用程序)两次?
- android - 添加 Java 8 支持时,Android Gradle 构建失败