Angular Material Tableを使用し、コマンドボタンと、テーブルのフッター行にあるテーブルのページネータが必要です。このようなもの
私のコードは実際にこのようなものです
<div class="example-table-container mat-elevation-z8">
<table mat-table [dataSource]="dataSource" multiTemplateDataRows>
<!-- DataSource's displayedColumns -->
<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>
<!-- Exporter column -->
<ng-container matColumnDef="exporter">
<td mat-footer-cell *matFooterCellDef colspan="2">
<button class="btn btn-primary" (click)="exportCsv(dataSource)">
<i class="material-icons" title="Exporter en CSV">save_alt </i>
</button>
</td>
</ng-container>
<!-- Paginator column -->
<ng-container matColumnDef="paginator">
<td mat-footer-cell *matFooterCellDef colspan="3">
<mat-paginator [pageSizeOptions]="[5,10,20]" showFirstLastButtons></mat-paginator>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let element; columns: displayedColumns;"></tr>
<tr mat-footer-row *matFooterRowDef="['exporter', 'paginator']"></tr>
</table>
</div>
ご覧のとおり、<mat-paginator>
要素はtd
...内にありますが、これはテーブルのページ付けを行わないためページ付け機能を壊しました...(「0 of 0」が表示され、ページ付けボタンが無効になります)... table
要素の外側に戻ると、ページネータは通常に戻ります...
ページ区切りをフッター行内に正しく配置する方法は?
最後に、誰かが同じ問題を抱えている場合、ツールバーを使用しました。
</table>
<mat-toolbar>
<mat-toolbar-row>
<mat-icon (click)="exportCsv(dataSource)" title="Export as CSV">save_alt</mat-icon>
<span class="example-spacer"></span>
<mat-paginator class="paginator" [pageSizeOptions]="[5, 10, 20]"></mat-paginator>
</mat-toolbar-row>
</mat-toolbar>
</div>
データソースのpaginator
をngAfterViewInit()
に割り当てることで、この問題を解決しました。
ngAfterViewInit(): void {
this.tableDataSource.paginator = this.paginator;
}