Material Table 教學 - slioplark/angular-tutorial GitHub Wiki
陣列中的每個「元素」表示 table 的各個欄位。
displayedColumns: Array<string> = ['id', 'name'];
在 html 中,必須要有可對應 displayedColumns
的欄位,否則 table 無法正常顯示。
- matColumnDef:對應
displayedColumns
的元素名稱 - th 標籤:顯示欄位名稱
<!-- Id Column -->
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef> Id </th>
</ng-container>
<!-- Name Column -->
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> Name </th>
</ng-container>
table = new MatTableDataSource<any>();
透過 table 的「data 屬性」進行資料綁定,以提供 table 顯示的資料。
this.table.data = value;
<table mat-table [dataSource]="table"></table>
綁定完成的資料,可使用row
來顯示欄位的內容。
row 是使用 *matCellDef 宣告的變數,可視為 table 的「列」資料。
<td mat-cell *matCellDef="let row"> {{ row.id }} </td>
<table mat-table [dataSource]="table">
<!-- Id Column -->
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef> Id </th>
<td mat-cell *matCellDef="let row"> {{ row.id }} </td>
</ng-container>
<!-- Name Column -->
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> Name </th>
<td mat-cell *matCellDef="let row"> {{ row.name }} </td>
</ng-container>
</table>
@ViewChild(MatSort, { static: true }) sort: MatSort;
透過 table 的「sort 屬性」與上述的「sort 變數」進行排序綁定,以提供 table 排序功能。
this.table.sort = this.sort;
- matSort:用於 table 標籤的 directive
- mat-sort-header:用於 th 標籤的 directive
<table mat-table [dataSource]="table" matSort>
<!-- Id Column -->
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Id </th>
<td mat-cell *matCellDef="let row"> {{ row.id }} </td>
</ng-container>
</table>