【问题标题】:Dynamic Tabs with content : Angular Material包含内容的动态选项卡:Angular Material
【发布时间】:2020-06-11 01:34:53
【问题描述】:

我的应用程序中有两个选项卡,我使用 ngFor 实现了相同的功能。相同的代码是,

 <mat-tab-group >
  <mat-tab (click)="testMethod2GetTitle(tabtitle)" *ngFor="let tabtitle of selelectedTabs; let index = index" [label]="tabtitle"  class="tab-title"> 
        <mat-selection-list >
          <mat-list-option  *ngFor="let list of tabsData" >

                 {{list}}
                </mat-list-option>
            </mat-selection-list>

  </mat-tab>
  </mat-tab-group>

然后对于每个选项卡,我需要显示不同的数据。例如标题为亚洲的选项卡将显示印度、巴基斯坦、中国,标题为“美国”的选项卡将显示南美洲、纽约、巴西等的列表。

我试图通过在用户单击时获取 tabstitle 来将值列表传递给 tabsData 的逻辑。但它有以下缺点:

  1. 点击标题时,无法在后端获取选项卡的标题。方法本身未被调用。
  2. 所有选项卡都会填充最后选择的选项卡的值。

【问题讨论】:

  • 请向我们展示您的数据在selectedTabstabsData 的外观

标签: angular tabs angular-material


【解决方案1】:

我不确定,但我建议您使用 mat-tree,它具有数据常量,通过使用它可以创建数据源。您可以使用这个 stack-blitz 链接,其中,根据大陆名称,我动态调用了国家/地区列表。虽然其中大部分是硬编码的,但您可以进一步参考和优化。

Stackblitz Example for Dynamic Tabs

【讨论】:

  • 这解决了我的问题,还有其他方法可以解决吗?
【解决方案2】:

你可以试试这种方式动态加载标签

 <mat-tab-group>
  <mat-tab *ngFor="let tabtitle of selelectedTabs; let index = index" class="tab-title">
    <ng-template mat-tab-label>{{tabtitle}}</ng-template>
    <mat-selection-list >
      <mat-list-option  *ngFor="let list of tabsData" >
             {{list}}
            </mat-list-option>
        </mat-selection-list>
  </mat-tab>
</mat-tab-group>

【讨论】:

  • 感谢您的快速成交。根据您的回答,我编辑了我的问题。对不起,这是我的错
  • 你能为此创建一个 stackblitz 示例吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 2021-01-29
  • 2016-10-25
  • 2019-11-30
相关资源
最近更新 更多