嵌套 Angular material 个标签
Nested Angular material tabs
我需要向某些 User Preferences
屏幕添加动态选项卡。
主首选项选项卡可以是具有静态内容的静态选项卡,但第二个选项卡应该具有嵌套的 mat-tab
元素。
这些额外的动态首选项来自后端,然后允许我使用 *ngFor
来呈现额外的选项卡。
我现在看到的问题是选项卡 labels
。标签文本的值来自第一个嵌套选项卡,而不是来自我正在设置的 label
属性。
请在此处查看我在 stackblitz 上的示例 - https://stackblitz.com/edit/mat-tabs-nested?embed=1&file=app/tab-group-async-example.html
在线项目的代码片段是:
<mat-tab-group>
...
<mat-tab label="More Dynamic Preferences">
<!-- NESTED HERE -->
<mat-tab-group>
<mat-tab *ngFor="let tab of asyncTabs | async">
<ng-template mat-tab-label>{{tab.label}}</ng-template>
{{tab.content}}
</mat-tab>
</mat-tab-group>
</mat-tab>
</mat-tab-group>
如果单击 "More Dynamic Preferences" 选项卡,则选项卡 header 文本变为 "First"。第二个选项卡也会发生同样的情况,我正在同步加载其选项卡内容,而不是异步示例。
我不确定 <ng-template>
元素在 <mat-tabs>
元素中的用途是什么,但是在删除这些元素之后,向选项卡的 label
输入添加一些绑定组件,并将异步调用重构为不使用 setTimeout()
并使用本机 rxjs 操作,我有一个使用嵌套选项卡和动态选项卡创建的工作演示:
<mat-tab label="Customer Preferences">
<h2>HERE ARE YOUR PREFERENCES</h2>
</mat-tab>
<mat-tab label="Dynamic Preferences">
<mat-tab-group>
<mat-tab *ngFor="let tab of prefTabs" [label]="tab.label">
{{tab.content}}
</mat-tab>
</mat-tab-group>
</mat-tab>
<mat-tab label="More Dynamic Preferences">
<mat-tab-group>
<mat-tab *ngFor="let tab of asyncTabs | async" [label]="tab.label">
{{tab.content}}
</mat-tab>
</mat-tab-group>
</mat-tab>
This issue is being caused by the way label is being set for tab.
您正在使用属性标签设置父标签,但是对于子标签,您使用了模板方式来定义它。
<ng-template mat-tab-label>{{tab.label}}</ng-template>
因此,您可以做的是将父选项卡的标签定义为相同,或者也为子选项卡添加标签属性。
我需要向某些 User Preferences
屏幕添加动态选项卡。
主首选项选项卡可以是具有静态内容的静态选项卡,但第二个选项卡应该具有嵌套的 mat-tab
元素。
这些额外的动态首选项来自后端,然后允许我使用 *ngFor
来呈现额外的选项卡。
我现在看到的问题是选项卡 labels
。标签文本的值来自第一个嵌套选项卡,而不是来自我正在设置的 label
属性。
请在此处查看我在 stackblitz 上的示例 - https://stackblitz.com/edit/mat-tabs-nested?embed=1&file=app/tab-group-async-example.html
在线项目的代码片段是:
<mat-tab-group>
...
<mat-tab label="More Dynamic Preferences">
<!-- NESTED HERE -->
<mat-tab-group>
<mat-tab *ngFor="let tab of asyncTabs | async">
<ng-template mat-tab-label>{{tab.label}}</ng-template>
{{tab.content}}
</mat-tab>
</mat-tab-group>
</mat-tab>
</mat-tab-group>
如果单击 "More Dynamic Preferences" 选项卡,则选项卡 header 文本变为 "First"。第二个选项卡也会发生同样的情况,我正在同步加载其选项卡内容,而不是异步示例。
我不确定 <ng-template>
元素在 <mat-tabs>
元素中的用途是什么,但是在删除这些元素之后,向选项卡的 label
输入添加一些绑定组件,并将异步调用重构为不使用 setTimeout()
并使用本机 rxjs 操作,我有一个使用嵌套选项卡和动态选项卡创建的工作演示:
<mat-tab label="Customer Preferences">
<h2>HERE ARE YOUR PREFERENCES</h2>
</mat-tab>
<mat-tab label="Dynamic Preferences">
<mat-tab-group>
<mat-tab *ngFor="let tab of prefTabs" [label]="tab.label">
{{tab.content}}
</mat-tab>
</mat-tab-group>
</mat-tab>
<mat-tab label="More Dynamic Preferences">
<mat-tab-group>
<mat-tab *ngFor="let tab of asyncTabs | async" [label]="tab.label">
{{tab.content}}
</mat-tab>
</mat-tab-group>
</mat-tab>
This issue is being caused by the way label is being set for tab.
您正在使用属性标签设置父标签,但是对于子标签,您使用了模板方式来定义它。
<ng-template mat-tab-label>{{tab.label}}</ng-template>
因此,您可以做的是将父选项卡的标签定义为相同,或者也为子选项卡添加标签属性。