我正在根据通过Web服务接收到的数据动态构建ag-Grid列(这是我在其中构建列定义的代码段;有关整个示例,请参见plunker):
colMeans
在建立列时,我基于从Web服务接收到的列类型(按预期工作)添加cellStyle进行列对齐。我还试图添加一个valueFormatter,它试图调用自定义格式器。不幸的是,当将rowData应用到网格(单击“应用行数据”按钮)时,我遇到了以下ag-Grid引发的异常(通过Chrome-> Inspect-> Console看到):
mean
以下是我创建的Plunker示例的网址:https://plnkr.co/edit/LcA5dRU9g8huLUWv3syZ?p=preview
我已经尝试了ag-Grid示例https://www.ag-grid.com/javascript-grid-value-setters/的多次迭代,但没有用。
答案 0 :(得分:1)
不确定是否要在string
中使用buildAvailableFields
进行操作。
parentColDefsString = parentColDefsString +
'{"headerName": "' + cr.label + '", ' +
'"children": [';
无论如何,这不是您面临的问题。
正是您的情况,您在这里遇到错误:
"valueFormatter": "this.customValueFormatter(datatype, displayMask)"'
这里您混合了输入属性,却忘记了输入params
的值。如果要向valueFormatter
函数添加其他输入参数,则应将其包装到inner function
valueFormatter: (params) => this.customValueFormatter(params, datatype, displayMask);
-或纯JS
valueFormatter: function(params) {
this.customValueFormatter(params, datatype, displayMask);
}
但是在“字符串”串联的情况下,该函数将不会被评估。
下一个问题是:
为什么不使用标准结构操作会更容易。
columnRequest.forEach(columnData=>{
// your parent
let column: ColDef={
headerName: columnData.label,
children:[]
}
// handle children
column.attributes.forEach(childrenColumnData=>{
let childrenColumn:ColDef={
headerName: childrenColumnData.label,
field: childrenColumnData.label
}
// condition for valueFormatter if it needed
if(true){
childrenColumn.valueFormatter = (params)=>this.customValueFormatter(params, yourAdditionalValue1, yourAdditionalValue2);
}
})
this.colums.push(column);
}