Angular Material有提供表格(table)這個元件,並提供方便的features,包括排序(sorting)、篩選(filter)、換頁(pagination)等等。
官方文件:https://material.angular.io/components/table/overview
1. 建立資料來源datasource
Angular Material有MatTableDataSource這個class可以使用,也可以自己customize。
首先在元件的ts檔,還有module.ts都有imports MatTableModule。
在table.component.ts定義要獲取的資料:
1 2 3 4 5 6 7 8 9 10 11
| export class PastTrainingsComponent implements OnInit { dataSource = new MatTableDataSource<any>();
ngOnInit() { <!-- 1. static資料 --> this.dataSource.data = this.tableService.getData(); <!-- 2. API --> this.httpClient.get<any>('URL').subscribe(data => { this.dataSource.data = data; }); }
|
2. 定義表格
在table.component.html定義表格,先定義資料來源,並建立各欄位。
最後使用mat-header-row和mat-row來呈現,這裡的陣列對應到前面欄位的def,若順序調換,欄位呈現的順序會依陣列來決定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <!-- 綁定資料來源 --> <mat-table [dataSource]="dataSource">
<!-- 建立"姓名"欄位 --> <ng-container matColumnDef="name">
<!-- 標題列 --> <mat-header-cell *matHeaderCellDef mat-sort-header>姓名</mat-header-cell> <!-- 子欄位 --> <mat-cell *matCellDef="let element">{{ element.name }}</mat-cell>
</ng-container>
<!-- 顯示標題列 --> <mat-header-row *matHeaderRowDef="['name', ...]"></mat-header-row> <!-- 顯示資料列 --> <mat-row *matRowDef="let row; columns: ['name', ...]"></mat-row> </mat-table>
|