在 ColumnDef cellEditorParams 下,值未使用最近的数据值更新 - ag-grid Angular

Under ColumnDef cellEditorParams values are not updating with recent data values - ag-grid Angular

我在列定义中使用 cellEditorParams 并在初始化列定义时为值使用 cellEditorParams,因为它显示为空,所以没有数据,但在一次服务调用后,我正在获取已归档值的数据,但视图未更新到最近的数据。当我在选项卡之间切换并返回并检查此处时,我的组件正在重新初始化,这次我可以看到数据已更新。

这是我定义列定义的方式:

  serviceObj: string[] = [];
  constructor(private myService: MyService) {
  this.myService.readCalls.subscribe(readCal => {
    this.serviceObj = readCal;
  })
 }
  
// Defining the Columns
  createColumnDefs() {
    this.columnDefs = [
      {
        headerName: 'Header 1', field: 'header1',
        headerTooltip: '',
        width: 250,
        menuTabs: [ 'filterMenuTab'],
        filterParams: {
          clearButton: true
        },
        editable: true,
        cellEditor: 'agRichSelectCellEditor',
        cellEditorParams: {
          required: true,
          values: this.serviceObj
        }
      },
      {
        headerName: 'Header 2', field: 'header2',
        headerTooltip: '',
        width: 200,
        menuTabs: [ 'filterMenuTab'],
        filterParams: {
          clearButton: true
        },
        editable: true
      }
     }
   ]  

此处 serviceObj 变量在初始化列定义后获取值,但网格未使用最新值更新。那么有什么办法可以处理这种情况或任何建议将不胜感激。

功能运行良好,只需对分配 cellEditorParams 进行一些小的更改,但我不确定这些更改是如何深入工作的。但它正在处理以下更改。

serviceObj: string[] = [];
  constructor(private myService: MyService) {
  this.myService.readCalls.subscribe(readCal => {
    this.serviceObj = readCal;
  })
 }
  
 private getValArray() {
  return {
      values: this.serviceObj
  };
}
 
// Defining the Columns
  createColumnDefs() {
    this.columnDefs = [
      {
        headerName: 'Header 1', field: 'header1',
        headerTooltip: '',
        width: 250,
        menuTabs: [ 'filterMenuTab'],
        filterParams: {
          clearButton: true
        },
        editable: true,
        cellEditor: 'agRichSelectCellEditor',
        cellEditorParams: this.getValArray.bind(this)
      }
      },
      {
        headerName: 'Header 2', field: 'header2',
        headerTooltip: '',
        width: 200,
        menuTabs: [ 'filterMenuTab'],
        filterParams: {
          clearButton: true
        },
        editable: true
      }
     }
   ] 

Yuu 需要等到 read Calls promise 解决。基本上在 promise resolve 之后设置列函数。

this.myService.readCalls.subscribe(readCal => {
this.serviceObj = readCal;
this.columnDefs = this.createColumnDefs()
})
createColumnDefs() {
return [
  {
    headerName: 'Header 1', field: 'header1',
    headerTooltip: '',
    width: 250,
    menuTabs: [ 'filterMenuTab'],
    filterParams: {
      clearButton: true
    },
    editable: true,
    cellEditor: 'agRichSelectCellEditor',
    cellEditorParams: this.getValArray.bind(this)
  }
  },
  {
    headerName: 'Header 2', field: 'header2',
    headerTooltip: '',
    width: 200,
    menuTabs: [ 'filterMenuTab'],
    filterParams: {
      clearButton: true
    },
    editable: true
  }
 }
 ]