Angular升级AG Grid至v28提示withComponents属性不存在如何解决
报错产生原因
AG Grid 在 v28 版本做了破坏性更新,正式移除了 AgGridModule.withComponents() 这个静态API。这个方法是v27及更早版本中,用来提前向AG Grid注册自定义单元格渲染器、编辑器、过滤器等Angular组件的入口,升级到v28后原有写法找不到对应方法定义,就会抛出TS2339类型错误。
正确适配方案
修改模块导入逻辑:删除原有调用
withComponents传自定义组件列表的写法,直接将AgGridModule加入Angular模块的imports数组即可。
新旧写法对比如下:v27及更早版本旧写法(v28已废弃)
import { AgGridModule } from '@ag-grid-community/angular'; @NgModule({ imports: [ AgGridModule.withComponents([CustomCellComp, CustomFilterComp]) ], declarations: [CustomCellComp, CustomFilterComp] }) export class AppModule {}v28及以上版本正确写法
import { AgGridModule } from '@ag-grid-community/angular'; @NgModule({ imports: [ AgGridModule ], declarations: [CustomCellComp, CustomFilterComp] }) export class AppModule {}自定义组件无需提前在模块层面通过
withComponents注册:只要你用到的自定义组件已经在当前Grid所属的Angular模块中声明,或者在独立组件场景下被正确导入,AG Grid就可以自动识别加载这些自定义组件,不需要额外传参给AgGridModule。适配注意点:禁止通过类型断言等方式强行调用已删除的
withComponents方法,v28版本代码包中已经完全移除了该方法的实现,强行调用会触发运行时错误。如果升级后出现自定义组件无法渲染的问题,优先检查组件是否已经在对应Angular作用域内正确声明/导入即可。
内容的提问来源于stack exchange,提问作者Stephen Cooper
相关产品推荐
相关产品推荐

