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

Angular ag-grid CellRenderer无法解析Spinner组件,如何解决?

在AG Grid中使用Angular组件作为单元格渲染器的解决方案
  • 问题根源:直接通过cellRenderer返回HTML字符串时,AG Grid只是将字符串插入DOM,不会经过Angular的编译流程,因此<spinner>组件和属性绑定无法被解析。
  • 正确方案:使用AG Grid的Angular单元格渲染器(cellRendererFramework),让Angular负责组件的创建与编译。

1. 创建自定义Angular单元格渲染器组件

import { Component } from '@angular/core';
import { ICellRendererAngularComp } from 'ag-grid-angular';

@Component({
  template: `
    <div>
      <spinner [show]="spinners['row_' + params.data.index]"></spinner>
      {{ params.data.index }}
    </div>
  `
})
export class IndexCellRendererComponent implements ICellRendererAngularComp {
  params: any;
  spinners: any;

  // 初始化时接收AG Grid传递的参数
  agInit(params: any): void {
    this.params = params;
    // 从context中获取父组件的spinners状态对象
    this.spinners = params.context.spinners;
  }

  // 单元格刷新时更新参数
  refresh(params: any): boolean {
    this.params = params;
    this.spinners = params.context.spinners;
    return true;
  }
}

2. 在模块中声明并配置组件

import { NgModule } from '@angular/core';
import { AgGridModule } from 'ag-grid-angular';
import { IndexCellRendererComponent } from './index-cell-renderer.component';
import { SpinnerComponent } from './spinner.component'; // 引入你的Spinner组件

@NgModule({
  declarations: [
    IndexCellRendererComponent,
    SpinnerComponent
  ],
  imports: [AgGridModule],
  entryComponents: [IndexCellRendererComponent] // Angular 9+ 可省略,旧版本需添加
})
export class YourFeatureModule { }

3. 修改列定义使用自定义渲染器

// 假设spinners是当前组件的属性
index_col_def = {
  headerName: "ID",
  field: "index",
  cellRendererFramework: IndexCellRendererComponent,
  // 通过context传递父组件的spinners对象
  context: { spinners: this.spinners }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:10:24