Не совсем уверен, почему вы работаете с 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);
}
Но в случаеиз конкатенации 'string' эта функция не будет оценена.
И следующий вопрос:
Почему бы просто не работать со стандартной структурой, это было бы намного проще.
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);
}