在 mat 选项卡上将无选项卡设置为默认活动选项卡
Set no tab as default active tab on mat tab
我使用 mat-tab
实现了搜索功能,我不需要在初始加载时选择任何选项卡。
仅当用户单击特定选项卡时,选项卡才应激活。
目前,第一个选项卡在加载时处于活动状态。
我试过设置 selectedIndex="null"
但没有用。
此外,我需要在单击按钮时重置选定的选项卡。
当前 API 版本中没有用于取消选择所有选项卡的预定义选项,因为它暗示至少应有一个选项卡处于活动状态。但是有一个小的解决方法(恕我直言,这似乎很好):我们可以在索引 0
处再添加一个辅助选项卡,将其留空(没有任何内容)并使用 display: none
隐藏它。这样你就有了额外的不可见选项卡,你仍然可以选择导航到这个选项卡,这看起来非常接近于取消选择所有选项卡。
只需几行 HTML / CSS.
即可实现
HTML:
<button (click)="tabs.selectedIndex = 0">RESET</button>
<mat-tab-group #tabs>
<mat-tab></mat-tab> <!-- ADDITIONAL TAB -->
<mat-tab label="First">
<p>Content 1</p>
</mat-tab>
<mat-tab label="Second">
<p>Content 2</p>
</mat-tab>
<mat-tab label="Third">
<p>Content 3</p>
</mat-tab>
</mat-tab-group>
CSS:
::ng-deep .mat-tab-labels > .mat-tab-label:first-child {
display: none;
}
这是一个有效的 STACKBLITZ,您可以看到它的实际效果。
我的感觉是,如果您最初不想呈现任何选项卡内容或直到它被单击。您可以隐藏内容,直到单击选项卡面板。如下所示:
.HTML
<mat-tab-group (selectedTabChange)="onTabPanelClick($event, $event.tab)">
<mat-tab label="First-Tab">
<div class="col-md-12" *ngIf="isFirstTabVisible">
</div>
</mat-tab>
<mat-tab label="Second-tab">
<div class="col-md-12" *ngIf="isSecondTabVisible">
</div>
</mat-tab>
<mat-tab label="Third-tab">
<div class="col-md-12" *ngIf="isThirdTabVisible">
</div>
</mat-tab>
</mat-tab-group>
.ts
onTabPanelClick(event, tab) {
this.isFirstTabVisible= (event.index === 0) ? true : false;
this.isSecondTabVisible= (event.index === 1) ? true : false;
this.isThirdTabVisible= (event.index === 2) ? true : false;
}
mat 选项卡处于活动状态
mat-tab-label-active
::ng-deep .mat-tab-label-active {
background-color : red;
font-size : 15px
}
我使用 mat-tab
实现了搜索功能,我不需要在初始加载时选择任何选项卡。
仅当用户单击特定选项卡时,选项卡才应激活。
目前,第一个选项卡在加载时处于活动状态。
我试过设置 selectedIndex="null"
但没有用。
此外,我需要在单击按钮时重置选定的选项卡。
当前 API 版本中没有用于取消选择所有选项卡的预定义选项,因为它暗示至少应有一个选项卡处于活动状态。但是有一个小的解决方法(恕我直言,这似乎很好):我们可以在索引 0
处再添加一个辅助选项卡,将其留空(没有任何内容)并使用 display: none
隐藏它。这样你就有了额外的不可见选项卡,你仍然可以选择导航到这个选项卡,这看起来非常接近于取消选择所有选项卡。
只需几行 HTML / CSS.
即可实现HTML:
<button (click)="tabs.selectedIndex = 0">RESET</button>
<mat-tab-group #tabs>
<mat-tab></mat-tab> <!-- ADDITIONAL TAB -->
<mat-tab label="First">
<p>Content 1</p>
</mat-tab>
<mat-tab label="Second">
<p>Content 2</p>
</mat-tab>
<mat-tab label="Third">
<p>Content 3</p>
</mat-tab>
</mat-tab-group>
CSS:
::ng-deep .mat-tab-labels > .mat-tab-label:first-child {
display: none;
}
这是一个有效的 STACKBLITZ,您可以看到它的实际效果。
我的感觉是,如果您最初不想呈现任何选项卡内容或直到它被单击。您可以隐藏内容,直到单击选项卡面板。如下所示:
.HTML
<mat-tab-group (selectedTabChange)="onTabPanelClick($event, $event.tab)">
<mat-tab label="First-Tab">
<div class="col-md-12" *ngIf="isFirstTabVisible">
</div>
</mat-tab>
<mat-tab label="Second-tab">
<div class="col-md-12" *ngIf="isSecondTabVisible">
</div>
</mat-tab>
<mat-tab label="Third-tab">
<div class="col-md-12" *ngIf="isThirdTabVisible">
</div>
</mat-tab>
</mat-tab-group>
.ts
onTabPanelClick(event, tab) {
this.isFirstTabVisible= (event.index === 0) ? true : false;
this.isSecondTabVisible= (event.index === 1) ? true : false;
this.isThirdTabVisible= (event.index === 2) ? true : false;
}
mat 选项卡处于活动状态
mat-tab-label-active
::ng-deep .mat-tab-label-active {
background-color : red;
font-size : 15px
}