Вы можете сделать это следующим образом:
Перенос данных из столбцов в строку:
Before:
Mango |10
Banana|5
After:
Mango|Banana
10|5
Включение меток в качестве первого столбца ваших данных:
Name|Mango|Banana
Quantity|10|5
Настройте таблицу для динамического отображения столбцов (поэтомучто у вас может быть любое количество столбцов), как в этом примере из документации таблицы угловых материалов :
<table mat-table [dataSource]="data" class="mat-elevation-z8">
<ng-container [matColumnDef]="column" *ngFor="let column of displayedColumns">
<th mat-header-cell *matHeaderCellDef> {{column}} </th>
<td mat-cell *matCellDef="let element"> {{element[column]}} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="columnsToDisplay"></tr>
<tr mat-row *matRowDef="let row; columns: columnsToDisplay;"></tr>
</table>
Если не требуется, вы можете удалить строку заголовка
Если вы хотите отформатировать первый столбец, вы можете использовать некоторые css как:
td.mat-cell:nth-child(1) {
// formatting
}
Кроме того, при необходимости вы можете использовать свойство sticky из MatColumnDef, чтобы оставить первый столбец липким (в этом случае вы можете захотеть, чтобы первый столбец был отделен от динамического * ngForцикл, так что вы можете легко получить только первый столбец ")"
Я создал рабочий пример stackblitz