微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

垫表分页器和动态数据排序问题

如何解决垫表分页器和动态数据排序问题

我正在尝试实现垫子表,问题是它的排序和分页器不起作用,我经历了所有与之相关的问题,但无法修复。如果我有10条记录,它只会显示前5条记录,如果我更改一些代码然后尝试,则它会显示全部10条记录,但不能按预期工作

HTML文件

HidD_GetAttributes

我的TS文件

 <div   id="div1"
                  [hidden]="!(  div1===1 && div2===0 && div3===0)">

      <table mat-table [dataSource]="dataSource" matSort>
                          <ng-container matColumnDef="cola">
                            <th mat-header-cell *matHeaderCellDef mat-sort-header> col a </th>
                            <td mat-cell *matCellDef="let row"> {{row.colvala}} </td>
                          </ng-container>
    
                          <ng-container matColumnDef="colb">
                            <th class="headerCell w-17" mat-header-cell *matHeaderCellDef>colb</th>
                           <td mat-cell *matCellDef="let row"> {{row.colvalb}} </td>
                          </ng-container>
     
                          <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
                          <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
    
    
                          <tr class="mat-row" *matNoDaTarow>
                            <td class="mat-cell" colspan="4">No data matching the filter "{{input.value}}"</td>
                          </tr>
                        </table>
    
      <mat-paginator [pageSizeOptions]="[5,10,25,100]"></mat-paginator>
</div>

像这样的一个div,我有更多的8 div,并且每个都具有mat功能,每个mat的表分页器和排序都有这样的问题

解决方法

这是渲染计时问题,将您的分页和排序逻辑包装在setTimeOut()中

 ngOnInit() {
this._servcall.getdatafromapi().subscribe(result => {
  this.resultdata = result;

  this.displayedColumns  = ['col1','col2']
  this.dataSource  = new MatTableDataSource(this.resultdata);
      setTimeout(
      () => {
          this.dataSource.paginator = this.paginator;
          this.dataSource.sort = this.sort;
       });
   }
 })

有关更多详细信息,请参阅 MatSort and MatPaginator does not work without setTimeOut

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。