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

使用ViewChild信号后无法修改Angular Materials分页器值

解决viewChild信号修改分页器属性报错的问题

问题核心在于viewChild返回的是只读Signal类型,而非直接的MatPaginator实例,直接对paginator赋值相当于修改信号本身,违反了Angular信号的读写规则。

修正方法如下:

  • 调用信号的()方法获取当前的MatPaginator实例
  • 增加空值检查,避免视图未初始化时实例为undefined

修改后的完整代码:

paginator = viewChild<MatPaginator>('paginator');

_onPaginationChange(event: PageEvent) {
    const previousPageIndex = this.req.pageNumber - 1;
    const previousPageSize = this.req.pageSize;

    this.checkModifiedCellsAndCallback(() => {
      this.req.pageNumber = event.pageIndex + 1;
      this.req.pageSize = event.pageSize;
      this.getTableData();
    });

    // Revert paginator state if the user cancels the action
    if (this.modifiedCells.size > 0) {
      setTimeout(() => {
        // 获取分页器实例并做空值检查
        const paginatorInstance = this.paginator();
        if (paginatorInstance) {
          paginatorInstance.pageIndex = previousPageIndex;
          paginatorInstance.pageSize = previousPageSize;
        }
      });
    }
  }

补充说明:

  • viewChild信号是只读信号,仅能通过()方法获取当前值,不能直接对信号本身赋值
  • 空值检查是必要操作,组件初始化阶段或视图未完成渲染时,信号可能返回undefined

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:22:11