[英]Angular 8 with Material tabs - select last active tab on reload
這是一個簡單、朴素的硬編碼版本:
<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>
我建議將最后一個 tabIndex 存儲在 localStorage 中。
更新 tabIndex 以引用 localStorage 中最后保存的索引。 因此,當頁面刷新或返回時,它會顯示最后顯示的選項卡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.