Angular mat-table ng-container to ng-content
Bonjour,
je cherche à créer un mat-table avec des définitions de colonnes déjà pres défini car utilisés à plusieurs endroits.
parent Component
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<!-- displayedColumns: string[] = ['firstName', 'lastName', 'actions']-->
<app-table [data]="users" [displayedColumns]="displayedColumns" [busy]="busyLoading">
<!-- action -->
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>{{'COMMON.ACTION'}}</th>
<td mat-cell *matCellDef="let row">
<button type="button" [routerLink]="['/users/' + row.id]">edit</button>
</td>
</ng-container>
</app-table> |
app-table component
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<table mat-table [dataSource]="dataSource">
<ng-container matColumnDef="firstName">
<th scope="col" mat-header-cell *matHeaderCellDef>{{'USER.FIRST_NAME' | translate}}</th>
<td mat-cell *matCellDef="let row">{{row.firstName}}</td>
</ng-container>
<!-- serialNumber -->
<ng-container matColumnDef="lastName">
<th scope="col" mat-header-cell *matHeaderCellDef>{{'USER.LASTE_NAME' | translate}}</th>
<td mat-cell *matCellDef="let row">{{row.lastName}}</td>
</ng-container>
<!-- what I'm trying to do -->
<ng-content></ng-content>
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table> |
<!-- ERROR Error: Could not find column with id "actions" -->
J'essayes donc de définir certaines colonnes dans un parent, passer ces définitions par le biez de ng-content à l'enfant, en l'occurrence app-table.
et ensuite affiches ces colonnes comme si le code avait était écrit dans l'enfant, un peu comme si le code passé en paramètre, avait été l'équivalent d'un include d'un morceau de text
Auriez vous une idée de comment procéder ?
Merci d'avance