我正在尝试通过使用网格API调用setColumnDefs来设置新的列定义。这不符合预期。列标题的名称将不再更新!
查看此Plunkr:Version 19.1.x
版本19.0.0是最新的工作版本。
查看此Plunkr:Version 19.0.0
对我来说,这似乎是个错误!?
在我的项目中,我使用的是Angular 5,我注意到相同的行为。
答案 0 :(得分:3)
我能够重现您的行为。以下(肮脏的)解决方法起作用:
gridOptions.api.setColumnDefs([]);
gridOptions.api.setColumnDefs(newColDefs);
将columnDefs设置为一个空数组,然后传递newColDefs似乎可以实现您想要的。
答案 1 :(得分:0)
我想它应该是最新版本的新的变更检测方法。
如果您要像这样更新代码:
var arrayPath = [];
console.log(singleFile.originalFilename); // '3.jpg','5.jpg','3.jpg','3.jpg','8.jpg'
console.log(singleFile.size); // '1345','5778','1345','1345','7777'
for(i=0; i < files.uploadFiles.length; i++){
singleFile=files.uploadFiles[i];
if(arrayPath.indexOf(singleFile.originalFilename) === -1){
arrayPath.push([singleFile.originalFilename,singleFile.size,'true']);
}else{
console.log("some singleFiles are duplicate");
}
}
console.log(arrayPath);
它将按预期工作。
设置新列后,网格将与当前列进行比较,并确定哪些列是旧的(要删除),新的(创建的新列)或保留的(保留的列将保持其状态,包括位置,过滤器和排序)。
列定义的比较是在1)对象引用比较和2)列ID(例如 colDef.colId )上完成的。如果对象引用匹配,或者列ID匹配,则网格会将列视为同一列。
在第一种情况下,它是对象比较,在第二种示例中(更新后)是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);
}
情况。
更改来自19.1 version版本
AG-1591允许对列定义进行Delta更改。