You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新增表格行后Mat-pagination无法自动跳转至新页面问题求助

问题原因

Angular Material 的 MatTableDataSource 更新 data 属性后,MatPaginator 的 length 不会同步立即更新,需要等待下一次 Angular 变更检测周期完成才会刷新。你在更新数据源后立刻调用 lastPage() 方法时,使用的还是更新前的旧长度值,所以当原数据刚好填满整页时,旧长度计算出来的最后一页还是原来的页面,不会跳到新增行所在的新页面。

解决方案

直接在更新数据源后手动同步分页器的长度为最新的数据长度,再执行跳页逻辑即可,不需要调用私有方法或者强制换页。

修正后的 addLog 方法代码如下:

addLog() {
  const log = new Log();
  log.assignee = '';
  log.timeSpentTotal = 0;
  this.checkRowValid();
  const data = this.dataSource.data;
  data.push(log);
  this.dataSource.data = data;
  // 手动同步分页器长度为最新数据长度
  this.paginator.length = data.length;
  // 直接跳转到最后一页
  this.paginator.lastPage();
}

可选替代方案(不推荐)

如果不想手动维护长度,也可以把跳页逻辑放到 setTimeout 中,等待变更检测完成后再执行,不过这种方式属于时序hack,稳定性不如手动同步长度:

addLog() {
  // 前面的新增逻辑不变
  this.dataSource.data = data;
  setTimeout(() => {
    this.paginator.lastPage();
  })
}

内容的提问来源于stack exchange,提问作者shredder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:48:03