Dan*_* C. 5 ag-grid ag-grid-angular
我试图通过使用网格API调用setColumnDefs来设置新的列定义。这不符合预期。列标题的名称将不再更新!
参见此Plunkr:19.1.x版
版本19.0.0是最新的工作版本。
看到这个Plunkr:版本19.0.0
对我来说,这似乎是一个错误!
在我的项目中,我使用的是Angular 5,我注意到相同的行为。
我能够重现您的行为。以下(脏)变通办法起作用:
gridOptions.api.setColumnDefs([]);
gridOptions.api.setColumnDefs(newColDefs);
Run Code Online (Sandbox Code Playgroud)
将columnDefs设置为一个空数组,然后传递newColDefs似乎可以实现您想要的目标。
我想这取决于最新版本的新的变更检测方式。
如果您将这样更新代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
它将按预期工作。
设置新列时,网格将与当前列进行比较,并确定哪些列是旧列(要删除)、新列(创建新列)或保留列(保留的列将保持其状态,包括位置、过滤和排序)。
列定义的比较是在 1)对象引用比较和 2) 列 ID(例如colDef.colId )上完成的。如果对象引用匹配或列 ID 匹配,则网格将这些列视为同一列。
在第一种情况下,它是对象比较,在第二个样本(更新后)上是对象比较colId。
更改来自19.1 版本发布
AG-1591 允许对列定义进行增量更改。
| 归档时间: |
|
| 查看次数: |
1195 次 |
| 最近记录: |