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

swimlane/ngx-datatable组件属性变更时如何触发cellClass/rowClass函数执行?

ngx-datatable的rowClass、cellClass样式计算函数默认仅在表格核心配置(数据源rows、列定义、分页排序规则等)发生引用变更时才会重新执行,普通组件内部属性变更不会主动触发样式重计算,可以通过以下两种方式触发执行:

  • 方法1:手动调用表格内置重绘方法
    给ngx-datatable声明模板引用变量,在依赖属性更新后主动调用内置方法触发重计算,代码示例如下:
import { DatatableComponent } from '@swimlane/ngx-datatable';

@Component({
  ...,
  template: `<ngx-datatable #table [rowClass]="rowClass" [rows]="rows"></ngx-datatable>`
})
class SomeComponent {
  // 获取表格组件实例
  @ViewChild('table') table: DatatableComponent;
  someVariable = true;
  // 表格数据源
  rows = [];

  // 自定义的变量更新方法
  updateSomeVariable() {
    this.someVariable = false;
    // 主动触发表格重计算,会重新执行rowClass、cellClass函数
    this.table.recalculate();
    // 也可以调用 updateRows 方法,效果一致
    // this.table.updateRows();
  }

  rowClass = (row) => {
    return {
      'some-class': this.someVariable === row.someVariable
    };
  };
}
  • 方法2:变更rows数组的引用
    如果不需要操作表格实例,可以在依赖属性更新后,对rows数组做浅拷贝生成新的引用,触发表格的输入属性变更检测,自动触发样式重计算:
updateSomeVariable() {
  this.someVariable = false;
  // 浅拷贝数组生成新引用,触发表格输入变更检测
  this.rows = [...this.rows];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 17:27:01