Ag-grid columnDefs添加自定义属性遇警告,__metadata__属性是否适用?
Ag-Grid 列定义自定义属性与
__metadata__属性使用说明 __metadata__是Ag-Grid官方预留的列定义扩展字段,专门用来承载用户自定义的列属性,完全符合你的使用需求。Ag-Grid默认会校验列定义根节点的所有属性,只要出现官方未定义的字段就会抛出警告,目的是避免用户拼写错官方属性名导致功能异常,__metadata__属于官方允许的例外字段,存入该字段下的自定义属性不会触发校验警告。- 文档和类型定义中未查询到相关说明是两个原因导致的:
- 该属性为Ag-Grid v28及以上版本才新增的特性,旧版本的文档、类型定义中不会包含相关内容
- 该属性属于偏底层的预留扩展字段,未被纳入常用功能文档的公开说明范围,仅会在控制台未定义属性警告、源码类型定义中暴露
- 基础使用示例:
所有自定义属性统一放到__metadata__对象中即可,不需要在列定义根节点添加:const columnDefs = [ { field: 'username', headerName: '用户名', __metadata__: { // 你的自定义属性都放在这里 allowBatchEdit: true, exportPriority: 2, customRenderType: 'userTag' } } ] - 取值方法:在Ag-Grid的任意回调、渲染组件中,都可以通过列实例拿到对应的自定义属性,示例:
// 单元格渲染器中取值示例 function UserNameRenderer(params) { const customMeta = params.colDef.__metadata__ // 后续直接使用customMeta下的自定义属性即可 } - TypeScript类型补全方法:如果需要补全
__metadata__的类型提示,可以手动扩展Ag-Grid的ColDef类型:declare module 'ag-grid-community' { interface ColDef<TData = any, TValue = any> { // 可根据你的实际业务场景替换具体的类型定义 __metadata__?: Record<string, any> } }
内容的提问来源于stack exchange,提问作者AGrigorii
相关产品推荐
相关产品推荐

