Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ag栅格在未定义字段上编辑列_Javascript_Angular_Ag Grid_Ag Grid Ng2 - Fatal编程技术网

Javascript 使用ag栅格在未定义字段上编辑列

Javascript 使用ag栅格在未定义字段上编辑列,javascript,angular,ag-grid,ag-grid-ng2,Javascript,Angular,Ag Grid,Ag Grid Ng2,我已经为如下列定义配置了ag网格 { headerName: 'Model Level', field: 'ModelLevelTimeSeries.Id.Value', editable: false, cellRendererFramework: RenderEntityComponent, cellStyle: { textAlign: "center" }, suppressSizeT

我已经为如下列定义配置了ag网格

    {
        headerName: 'Model Level',
        field: 'ModelLevelTimeSeries.Id.Value',
        editable: false,
        cellRendererFramework: RenderEntityComponent,
        cellStyle: { textAlign: "center" },
        suppressSizeToFit: true,
    }
基本上,后端的字段可以返回null

"ModelLevelTimeSeries": {
        "Id": null
    }

当我编辑单元格值时,对于
agInit
方法中的
params.value
,它返回
null

我使用的是“ag网格”:“^17.0.0”,
“ag grid angular”:“^17.0.0”。

只需在列定义中添加CellrNoder函数即可

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,
    }

您可以将值设置器用于您的文件

{
  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;
     }
  }
}

根据我的经验,如果字段为.a.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
  }
},

这对你有用吗??
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
  }
},