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

Angular-Ag-Grid数据加载后及事件触发时如何禁用指定行单元格的Checkbox、Radio

解决方案

你遇到的核心问题是静态配置的cellRendererParams仅在单元格初始化时计算一次,后续行数据更新不会触发重新计算,且自定义渲染器只在agOnInit中读取一次参数,没有响应数据变化。按以下步骤修改即可:


步骤1:调整自定义渲染器逻辑,绑定动态值

不要仅在agOnInit生命周期中读取禁用参数并存储为本地静态变量,改为直接绑定渲染器上下文的动态参数,同时实现refresh方法响应数据更新(以Angular版本ag-grid为例):

// GridCheckboxRendererComponent 示例代码
import { Component } from '@angular/core';
import { ICellRendererAngularComp } from 'ag-grid-angular';

@Component({
  selector: 'app-grid-checkbox-renderer',
  template: `<input type="checkbox" [disabled]="!params.data.state" [(ngModel)]="params.value" />`
})
export class GridCheckboxRendererComponent implements ICellRendererAngularComp {
  params: any;

  agInit(params: any): void {
    this.params = params;
  }

  // 行数据更新时触发,刷新组件参数
  refresh(params: any): boolean {
    this.params = params;
    return true;
  }
}

Radio按钮渲染器GridRadioButtonRendererComponent同理,直接在模板的disabled属性绑定!params.data.state即可,无需依赖父组件传入的禁用参数。


步骤2:(可选)保留父级控制逻辑的修改方案

如果你需要将禁用逻辑放在父组件统一管理,可将cellRendererParams改为回调形式,每次单元格渲染时动态计算禁用状态:

// 列定义修改示例
{
  headerName: 'check Case',
  field: 'checkCase',
  cellRendererFramework: GridCheckboxRendererComponent,
  onCellValueChanged: (event: CellValueChangedEvent) => {
    this.updateCaseCheck(event);
  },
  // 改为回调,每次渲染都会执行,拿到当前行最新数据
  cellRendererParams: (params) => ({
    disableCaseCheckbox: !params.data.state
  })
},
{
  headerName: 'Make Default',
  field: 'makeDefault',
  cellRendererFramework: GridRadioButtonRendererComponent,
  onCellValueChanged: (event: CellValueChangedEvent) => {
    this.setDefault(event);
  },
  cellRendererParams: (params) => ({
    disableDefaultRadio: !params.data.state
  })
}

步骤3:新增行后强制刷新对应单元格(可选)

如果修改后新增行仍未生效,可在插入行后主动调用ag-grid的刷新API刷新目标行的对应列:

this.gridApi.setRowData(this.caseRowData);
// 用你拿到的rowNodeId获取目标行节点
const targetRow = this.gridApi.getRowNode(新增行的rowNodeId);
// 强制刷新目标行的复选框、单选框列
this.gridApi.refreshCells({
  rowNodes: [targetRow],
  columns: ['checkCase', 'makeDefault'],
  force: true
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:57:04