我正在使用Angular 5和Material 5:
<mat-tab-group>
<mat-tab label="INFO">
info goes here
</mat-tab>
<mat-tab label="CONTACTS">
<div *ngIf="isActive">
contacts should load here
</div>
</mat-tab>
</mat-tab-group>
我试图显示联系人,但仅在选项卡处于活动状态时才显示。 isActive
(https://github.com/angular/material2/blob/5.2.x/src/lib/tabs/tab.ts#L83)有mat-tab
属性,但我无法访问它,它看起来不确定。
我不明白我在做什么错。
(目前我也无法使用较新版本的Angular)。
答案 0 :(得分:1)
这样工作:
<mat-tab-group>
<mat-tab label="INFO">
info goes here
</mat-tab>
<mat-tab #contactsTab label="CONTACTS">
<div *ngIf="contactsTab.isActive">
contacts should load here
</div>
</mat-tab>
</mat-tab-group>
元素在没有引用的情况下无法访问任何元素的属性(Docs: Components Interactions)
div
不会被视为mat-tab
的一部分,除非它是模板的一部分,即使它在模板中也是如此。
答案 1 :(得分:1)
我认为您不需要*ngIf
。如果检查选项卡正文,则应该在非活动选项卡中看不到内容。
例如,在这个简单的StackBlitz中,有两个选项卡,第二个<mat-tab-body>
里面什么也没有。
然后,单击另一个选项卡,然后发生相反的情况。
来源
<mat-tab-group>
<mat-tab label="One">
<h1>Some tab content</h1>
<p>...One</p>
</mat-tab>
<mat-tab label="Two">
<h1>Some more tab content</h1>
<p>...Two</p>
</mat-tab>
</mat-tab-group>
DOM检查,选项卡1处于活动状态
<div class="mat-tab-body-wrapper">
<!--bindings={
"ng-reflect-ng-for-of": "[object Object],[object Object"
}-->
<mat-tab-body class="mat-tab-body ng-tns-c5-0 mat-tab-body-active ng-star-inserted" role="tabpanel" ng-reflect-_content="[object Object]" ng-reflect-position="0" id="mat-tab-content-0-0" aria-labelledby="mat-tab-label-0-0" ng-reflect-origin="0">
<div class="mat-tab-body-content ng-trigger ng-trigger-translateTab" style="transform: none;">
<!---->
<h1 class="ng-star-inserted" style="">Some tab content</h1>
<p class="ng-star-inserted" style="">...One</p>
<!---->
</div>
</mat-tab-body>
<mat-tab-body class="mat-tab-body ng-tns-c5-1 ng-star-inserted" role="tabpanel" ng-reflect-_content="[object Object]" ng-reflect-position="1" id="mat-tab-content-0-1" aria-labelledby="mat-tab-label-0-1">
<div class="mat-tab-body-content ng-trigger ng-trigger-translateTab" style="transform: translate3d(100%, 0px, 0px);">
<!---->
</div>
</mat-tab-body>
</div>