angular - 如何在子路由中实现带有角度材料的路由选项卡?
问题描述
我想在选项卡中使用带有路由器导航的Angular Material 选项卡https://material.angular.io/components/tabs 。
我尝试<nav mat-tab-nav-bar>
按照文档中的说明使用,并找到了本教程:https ://nirajsonawane.github.io/2018/10/27/Angular-Material-Tabs-with-Router/
在那里我可以找到这样的模板:
<nav mat-tab-nav-bar>
<a mat-tab-link
*ngFor="let link of navLinks"
[routerLink]="link.link"
routerLinkActive #rla="routerLinkActive"
[active]="rla.isActive">
{{link.label}}
</a>
</nav>
<router-outlet></router-outlet>
但问题是,我的选项卡不在我的应用程序的根目录中,而是在子路由的子模块中。我有类似的东西:
在应用程序路由模块中:
const routes: Routes = [
...
{ path: 'subpath', loadChildren: () => import('./path-to-module/submodule.module').then(m => m.SubmoduleModule) },
...
];
在 submodule-routing-module 我应该有类似的东西:
const routes: Routes = [
{ path: '', component: FirstTabComponent },
{ path: 'tab2', component: SecondTabComponent },
]
我想要的是,如果我转到 url,/subpath
我会看到选择了第一个选项卡的选项卡,如果我转到 url,/subpath/tab2
我会看到选择了第二个选项卡的选项卡。
知道怎么做吗?
解决方案
我也遇到了同样的问题。我克隆了 Angular-Material-Tabs-with-Router,但用一个也有子组件的子组件对其进行了修改。
子组件被调用home
并在home.component.html
其中实现:
<nav mat-tab-nav-bar>
<a mat-tab-link
*ngFor="let link of navLinks"
[routerLink]="link.link"
routerLinkActive #rla="routerLinkActive"
[active]="rla.isActive">
{{link.label}}
</a>
</nav>
<router-outlet></router-outlet>
这将创建 3 个名为Notes
和Photos
的选项卡Documents
。该Notes
选项卡包括用于列出、查看、编辑和删除注释的其他组件。
我创建并将源添加到 GitHub 并将其导入到 Stackblitz:
推荐阅读
- mysql - 如果 MySQL 案例语句遇到意外值,则创建错误
- sql - 当 BigQuery 中没有任何“id”类型列时转置行和列
- python - S3 选择 CSV 中的检索标头
- perl - 如何使用一列索引值在单独的数据集中创建新列
- javascript - Userscript 不会将文本输入聚焦在某些页面上
- json - 将多个 JSON 数组写入文件
- autodesk-forge - Autodesk Forge - 转换和发布作业是否只完成一次还是被覆盖
- laravel - 如何保护源代码 Laravel 和 Vue
- css - 如何水平对齐 bootstrap 4 导航菜单?
- java - 为电子邮件 Intent 选择应用程序时,我的应用程序会显示为一个选项