首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可重用角11模板

可重用角11模板
EN

Stack Overflow用户
提问于 2021-05-13 13:09:26
回答 1查看 121关注 0票数 1

我有两个垫子标签,每个都有一个表,有相同的数据布局,只是一个不同的数据源。

代码语言:javascript
复制
<mat-tab-group>
  <mat-tab label="table 1">        
    <table mat-table [dataSource]="dataSource1">       <-- one data source
      <ng-container matColumnDef="col1">
        <th mat-header-cell *matHeaderCellDef></th>
        <td mat-cell *matCellDef="let val"> some Data </td>
      </ng-container>

      <ng-container matColumnDef="col2">
        <th mat-header-cell *matHeaderCellDef></th>
        <td mat-cell *matCellDef="let val"> some Data </td>
      </ng-container>

      <tr mat-header-row *matHeaderRowDef="['col1', 'col2']"></tr>
      <tr mat-row *matRowDef="let row; columns: ['col1', 'col2'];"></tr>
    </table>
  </mat-tab>
  <mat-tab label="table 2">        
    <table mat-table [dataSource]="dataSource2">       <-- another data source
      <ng-container matColumnDef="col1">
        <th mat-header-cell *matHeaderCellDef></th>
        <td mat-cell *matCellDef="let val"> some Data </td>
      </ng-container>

      <ng-container matColumnDef="col2">
        <th mat-header-cell *matHeaderCellDef></th>
        <td mat-cell *matCellDef="let val"> some Data </td>
      </ng-container>

      <tr mat-header-row *matHeaderRowDef="['col1', 'col2']"></tr>
      <tr mat-row *matRowDef="let row; columns: ['col1', 'col2'];"></tr>
    </table>
  </mat-tab>
</mat-tab-group>

如您所见,行和列是完全相同的,所以我想按如下所示重用表模板:

代码语言:javascript
复制
<table mat-table [dataSource]="dataSource2">
  <ng-container *ngTemplateOutlet="tableContent"></ng-container>
</table>

...

<ng-template #tableContent>
 <ng-container matColumnDef="col1">
    <th mat-header-cell *matHeaderCellDef></th>
    <td mat-cell *matCellDef="let val"> some Data </td>
  </ng-container>

  <ng-container matColumnDef="col2">
    <th mat-header-cell *matHeaderCellDef></th>
    <td mat-cell *matCellDef="let val"> some Data </td>
  </ng-container>

  <tr mat-header-row *matHeaderRowDef="['col1', 'col2']"></tr>
  <tr mat-row *matRowDef="let row; columns: ['col1', 'col2'];"></tr>
</ng-template>

这样我就明白了:

错误:缺少页眉、页脚和行的定义;无法确定应呈现哪些列。

如何定义模板一次?

EN

回答 1

Stack Overflow用户

发布于 2021-05-13 14:34:48

为什么不创建一个MyTableComponent并将数据作为输入来接收呢?

最后的HTML应该是这样的:

代码语言:javascript
复制
<mat-tab-group>
  <mat-tab label="table 1">        
    <my-table [data]="dataSource1"></my-table>
  </mat-tab>
  <mat-tab label="table 2">        
    <my-table [data]="dataSource2"></my-table>
  </mat-tab>
</mat-tab-group>

如果您坚持使用ngTemplateOutlet解决方案,那么如果在模板中添加表标记并在templateOutlet中传递数据(Read:如何使用NgTemplateOutlet和SearchforPassing data to ngTemplateOutlet),它可能会工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67519807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档