Set new column definition by setColumnDefs doesn't work anymore

北城余情 提交于 2019-12-01 17:43:41

问题


I'm trying to set new column definitions by calling setColumnDefs using the grid API. This doesn't work as expected. The names of the column headers will not be updated anymore!

See this Plunkr: Version 19.1.x

Version 19.0.0 is latest working version.

See this Plunkr: Version 19.0.0

For me it seems to be a bug!?

In my project I'm using Angular 5 and I notice the same behaviour.


回答1:


I was able to reproduce your behaviour. The following (dirty) workaround works:

  gridOptions.api.setColumnDefs([]);
  gridOptions.api.setColumnDefs(newColDefs);

Setting the columnDefs to an empty array and then passing the newColDefs seems to achieve what you are looking for.




回答2:


I suppose it up to the new way of change-detection on the latest version.

If you will update your code like that:

function updateColDef()
{ 
    let data = [];
    columnDefs.forEach(function(colDef) { 
        colDef.headerName = colDef.headerName + ' X ';
        data.push(colDef);
  })

  data.push( {
      headerName: 'New Column',
  });

  gridOptions.api.setColumnDefs(data);
}

It will work as expected.

Update:

When new columns are set, the grid will compare with current columns and work out which columns are old (to be removed), new (new columns created) or kept (columns that remain will keep their state including position, filter and sort).

Comparison of column definitions is done on 1) object reference comparison and 2) column ID eg colDef.colId. If either the object reference matches, or the column ID matches, then the grid treats the columns as the same column.

In the first case, it was an object comparison, on the second sample (after update) its colId case.

changes came from 19.1 version release

AG-1591 Allow Delta Changes to Column Definitions.



来源:https://stackoverflow.com/questions/53602148/set-new-column-definition-by-setcolumndefs-doesnt-work-anymore

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!