我有两个垫子标签,每个都有一个表,有相同的数据布局,只是一个不同的数据源。
<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>如您所见,行和列是完全相同的,所以我想按如下所示重用表模板:
<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>这样我就明白了:
错误:缺少页眉、页脚和行的定义;无法确定应呈现哪些列。
如何定义模板一次?
发布于 2021-05-13 14:34:48
为什么不创建一个MyTableComponent并将数据作为输入来接收呢?
最后的HTML应该是这样的:
<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),它可能会工作。
https://stackoverflow.com/questions/67519807
复制相似问题