我有这段代码,里面有分页,但是分页不起作用。它始终显示所有元素。但是从容器 div 中删除 *ngIf ,它就可以了。 为什么会这样呢?如何让它与 *ngIf 一起工作? 我真的需要使用它。
<div *ngIf="savingTransactionsDataSource" class="mat-elevation-z8">
<table mat-table [dataSource]="savingTransactionsDataSource">
<ng-container [matColumnDef]="column" *ngFor="let column of items">
...
</ng-container>
<tr mat-header-row *matHeaderRowDef="savingColumnsToDisplay; sticky: true;"></tr>
<tr mat-row *matRowDef="let row; columns: savingColumnsToDisplay;"></tr>
</table>
<mat-toolbar class="mat-toolbar-sticky">
<mat-toolbar-row>
<span class="spacer"></span>
<mat-paginator [length]="savingTransactionsDataSource.data.length"
[pageSize]="5"
[pageSizeOptions]="[5, 10, 15, 20]"
showFirstLastButtons>
</mat-paginator>
</mat-toolbar-row>
</mat-toolbar>
</div>
最佳答案
根据this GitHub 问题,分页器在 ngIf
内部中断,但您可以尝试使用此代码片段来解决该问题:
@ViewChild(MatPaginator) set matPaginator(mp: MatPaginator) { this.paginator = mp; this.setDataSourceAttributes(); } setDataSourceAttributes() { this.dataSource.paginator = this.paginator; this.dataSource.sort = this.sort; }
或者,发布的另一个解决方案是使用 hidden
属性而不是 ngIf
。
<div [hidden]="isLoading"> <mat-table [dataSource]="dataSource"> ... </mat-table> </div>
关于angular - 在 *ngIf 内部时, Material 分页不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64065278/