Я использую угловой материал для разбивки на страницы.
<div style=" display:block;">
<mat-table [dataSource]="dataSource" matSort>
<ng-container *ngFor="let col of dataDisplayedColumns" [matColumnDef]="col">
<mat-header-cell class="table-header header-p" *matHeaderCellDef>
<b>{{ col }}</b>
</mat-header-cell>
<mat-cell class="table-content context-position" *matCellDef="let element">
{{ element[col] }}
</mat-cell>
</ng-container>
<mat-header-row class="table-header header-p-row" *matHeaderRowDef="dataDisplayedColumns"></mat-header-row>
<mat-row matRipple
[ngClass]="((row['num']%2) == 1) ? 'row-single' : 'row-double'"
*matRowDef="let row; columns: dataDisplayedColumns;">
</mat-row>
</mat-table>
</div>
<mat-paginator #paginator class="paginator"
[pageSize]="10"
[hidePageSize]="true"
[pageSizeOptions]="[5, 10, 20]"
showFirstLastButtons>
</mat-paginator>
Код показывается следующим образом.
dataDisplayedColumns: string[] = [];
@ViewChild(MatPaginator) paginator: MatPaginator;
dataSource = new MatTableDataSource<any>();
page = 1;
pageSize = 10;
var self = this;
this.dataSourceService.getConnectionData(connection)
.pipe(takeUntil(this._unsubscribeAll))
.subscribe( (res: any) =>{
if(res.data.length>0){
console.log(Object.keys(res.data[0]));
self.dataDisplayedColumns = Object.keys(res.data[0]);
self.dataSource = new MatTableDataSource(res.data);
self.paginator.length = res.count;
self.paginator.pageSize = 10;
console.log(self.dataSource.data);
}
},err => {
console.log(err);
});
Проблема не в том, как я настраиваю страницу paginatorSizeзначение в
<mat-paginator #paginator class="paginator" [pageSize]="10" [hidePageSize]="true" [pageSizeOptions]="[5, 10, 20]" showFirstLastButtons></mat-paginator>
или использование кода для установки pageSize как 10
self.paginator.pageSize = 10;
В таблице по-прежнему отображаются все данные на странице, в то время как paginator's pageSize установлен в 10.