[英]Column edit on undefined field with ag-grid
我已經為下面的列定義配置了ag-grid
{
headerName: 'Model Level',
field: 'ModelLevelTimeSeries.Id.Value',
editable: false,
cellRendererFramework: RenderEntityComponent,
cellStyle: { textAlign: "center" },
suppressSizeToFit: true,
}
基本上,來自后端的字段可以返回null
"ModelLevelTimeSeries": {
"Id": null
}
要么
"ModelLevelTimeSeries": {
"Id": {
"Value": "dec70622-3ab3-4b47-a324-f69a14a53beb"
}
}
當我編輯單元格值時,它在agInit
方法中為params.value
返回null
。
我正在使用“ ag-grid”:“ ^ 17.0.0”,“ ag-grid-angular”:“ ^ 17.0.0”。
只需在您的列定義中添加,cellRnderer函數
cellRenderer: params => params.value ? params.value : ''
現在會是這樣
{
headerName: 'Model Level',
field: 'ModelLevelTimeSeries.Id.Value',
editable: false,
//add below line
cellRenderer: params => params.value ? params.value : ''
cellRendererFramework: RenderEntityComponent,
cellStyle: { textAlign: "center" },
suppressSizeToFit: true,
}
您可以為您的Coldef使用值設置器
{
headerName: 'Model Level',
field: 'ModelLevelTimeSeries.Id.Value',
editable: false,
cellRendererFramework: RenderEntityComponent,
cellStyle: { textAlign: "center" },
suppressSizeToFit: true,
valueSetter: function(params: any){
if (params.oldValue !== params.newValue) {
params.data[params.colDef.field] = (params.newValue) !== "" ? params.newValue.toUpperCase() : "";
return true;
}
else {
return false;
}
}
}
以我的經驗,如果該字段為.nested.key,則在valueSetter中使用params.data [params.colDef.field]將不起作用,因為params.colDef.field僅返回類似“ ModelLevelTimeSeries.Id.Value”的字符串。
現在,我依靠lodash的set()在valueSetter中執行此操作:
import * as set from 'lodash/set'
changeDetectValueSetter (params) {
if (params.oldValue !== params.newValue) {
set(params.data, params.colDef.field, params.newValue) // had to use lodash set, because params.colDef.field is a string representation of a nested object key
// params.data.instruction.billingrecord.invoice_number = params.newValue // could have done this, but it's fixed for that field.
// params.data[params.colDef.field] = params.newValue // this does not work at all if the field is.a.nested.key
return true
} else {
return false
}
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.