如何在分页更改时滚动到材料表的顶部

Che*_*dar 6 pagination angular-material angular

我遇到了一个问题,在材质表中,我单击“下一步”按钮,滚动保持在底部,而它应该滚动到顶部。

<mat-table class="table-container" fxFlex="100" [dataSource]="allUsersDataSource">
  <ng-container matColumnDef="firstName">
    <mat-header-cell fxFlex="25" *matHeaderCellDef> First Name </mat-header-cell>
    <mat-cell fxFlex="25" *matCellDef="let element"> {{element.first_name}} </mat-cell>
  </ng-container>

  <ng-container matColumnDef="lastName">
    <mat-header-cell fxFlex="25" *matHeaderCellDef> Last Name </mat-header-cell>
    <mat-cell fxFlex="25" *matCellDef="let element"> {{element.last_name}} </mat-cell>
  </ng-container> 
     
  <mat-header-row *matHeaderRowDef="allUsersColumns; sticky: true"></mat-header-row>
  <mat-row *matRowDef="let row; columns: allUsersColumns;"></mat-row>
</mat-table>

<mat-paginator #allUsersPaginator [pageSizeOptions]="[25,50,100]" (page)="onAllUserPaginateChange($event)"
    [length]="allUserPagination.length" [pageSize]="25" showFirstLastButtons></mat-paginator>
Run Code Online (Sandbox Code Playgroud)

这是后面的代码

onAllUserPaginateChange(event: any) {
  window.scroll(0,0);
}
Run Code Online (Sandbox Code Playgroud)

Che*_*dar 7

这里我给了表一个ID

例如。

<mat-table id ="matTable" class="table-container" 
  [dataSource]="allUsersDataSource">
<mat-table>
Run Code Online (Sandbox Code Playgroud)

以及打字稿文件中该表的分页方法。

onAllUserPaginateChange(event: any) {
  const matTable= document.getElementById('matTable');
  matTable.scrollTop = 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 使用 Angular7,`.scrollTop = 0;` 对我不起作用,但 `.scrollIntoView();` 可以...fwiw,不使用 `&lt;mat-table...&gt;` 而是使用常规的 `&lt;table. ..&gt;` 具有 `mat-table` 属性的元素。 (4认同)