ag-Grid:valueFormatter异常

时间:2019-02-27 22:32:00

标签: angular ag-grid

我正在根据通过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/的多次迭代,但没有用。

1 个答案:

答案 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);
}