angular - 带有材料选项卡的 Angular 8 - 重新加载时选择最后一个活动选项卡
解决方案
这是一个简单、幼稚的硬编码版本:
<mat-tab-group [selectedIndex]="1">
<mat-tab label="system" routerLink="syspref"> Default Preferences </mat-tab>
<mat-tab label="user" routerLink="userpref"> User Preferences </mat-tab>
</mat-tab-group>
为了使其更通用,您需要有一些编程方式来了解您有多少个选项卡。例如,如果您从数组构建选项卡。
<mat-tab-group [selectedIndex]="tabs.length - 1">
<mat-tab *ngFor="let tab of tabs" [label]="tab.label" [routerLink]="tab.link">{{tab.name}}</mat-tab>
</mat-tab-group>
其中 tabs 是具有适当属性名称的对象数组。
编辑:
您希望在页面重新加载时保留活动选项卡。
我为此遵循的一般模式是:
- 在选项卡更改时,将索引添加到查询参数
- 在页面加载时,在查询参数中查找索引
- 如果有效,设置活动标签索引
零件
constructor(private route: ActivatedRoute,
private router: Router) {}
selectedTabIndex: number;
ngOnInit(): void {
this.selectedTabIndex = parseInt(this.route.snapshot.queryParamMap.get('tab'), 10);
// TODO: check upper bound. Material will set the last tab as selected
// if selectedTabIndex >= number of tabs
if (isNaN(this.selectedTabIndex) || this.selectedTabIndex < 0) {
this.selectedTabIndex = 0;
}
}
onTabChange(selectedTabIndex: number): void {
this.router.navigate([], { relativeTo: this.route, queryParams: {
tab: selectedTabIndex
}});
this.selectedTabIndex = selectedTabIndex;
}
html
<mat-tab-group [selectedIndex]="selectedTabIndex"
(selectedIndexChange)="onTabChange($event)">
<mat-tab label="system" routerLink="syspref"> Default Preferences </mat-tab>
<mat-tab label="user" routerLink="userpref"> User Preferences </mat-tab>
</mat-tab-group>
推荐阅读
- javascript - 如何为网络文件传输格式化图像
- python - Numpy savetxt 将一维数组保存为列
- tsql - GROUP BY HAVING 逻辑不起作用(最小/最大日期)
- tensorflow - Tensorflow 1.13.1 无法识别 GPU
- c - 如何遍历多个数组
- mysql - 我如何计算每位讲师教授的学生数量而不包括重复项?
- java - 如何在 Visual Studio Code 中修改 Java 样板代码生成?
- mysql - MySQL日期子查询和两行唯一
- validation - 服务器端验证以验证上传的文件是实际图像
- javascript - IOS上的vimeo播放器自定义播放器具有全屏按钮