当 mat-table 在 NgIf 内时,mat-paginator 会中断

jmo*_*789 11 angular-material angular angular-material-table angular-material-paginator

我有一个使用角项目mat-tablemat-paginator对于特定视图,问题是该视图具有网格视图和表格视图与肘节,网格视图是默认和表是使用NgIf时隐时现的网格视图是活动的。如果我将默认设置为表格视图,则分页工作正常,除非我切换到网格视图并返回,如果默认设置为网格,则在我切换到表格视图时会中断。我猜是因为当这段代码运行时表是隐藏的:

this.sliceList = new MatTableDataSource<Slice>(result);
this.sliceList.paginator = this.paginator;
Run Code Online (Sandbox Code Playgroud)

我尝试了控制台日志记录this.sliceList,但sliceList.paginator在默认网格视图时未定义,因此我认为这是问题所在。我怎样才能解决这个问题?

Ami*_*nes 20

根据此线程,尝试使用 [hidden] 而不是 *ngIf。

<div [hidden]="condition">
  <mat-table [dataSource]="dataSource">
  ...
  </mat-table>
</div>
Run Code Online (Sandbox Code Playgroud)


Muh*_*lal 7

第一个解决方案

将 mat-paginator 从 *ngIf div 内部移动到外部

第二种解决方案

在声明 MatPaginator 或 MatSort 时使用静态 false

@ViewChild(MatPaginator, {static: false}) paginator: MatPaginator;
@ViewChild(MatSort, {static: false}) sort: MatSort;
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,我使用了第二种解决方案,但使用 `this.dataSource = new MatTableDataSource(my_data);` setTimeout(() =&gt; this.dataSource.paginator = this.paginator);` 并且它有效 (3认同)