Angular AG 网格压缩 JSON

Angular AG Grid Compressed JSON

我在 Angualr 2 中使用 AG Grid,我的后端数据不是键值对格式。

AG 网格期望:

*rowData = [{col1: "data1", col2: "data2"},{col1:"data3", col2:"data4"}];*

在我们的例子中,我们从后端获取以下格式的压缩数据

*gridData  = {cols:[col1, col2], rows:[{"data1","data2"},{"data3","data4"}]}*

这迫使我们在 UI 级别将 gridData 转换为 rowData。

有什么解决办法吗?我们无法更新 rest 以提供预期的数据。

您需要使用 valueGetter 参数而不是 field 参数。这里有一个plunker来演示。

假设您不知道从后端接收了多少列,或者您想要一个通用的解决方案,那么您只需要这样做:

this.gridData  = {cols:["col1", "col2"], rows:[["data1","data2"],["data3","data4"]]};
this.columnDefs = [];
this.rowData = this.gridData.rows;
for (var i in this.gridData.cols){
  var scopeOutCurrIndex = i => (params) => params.data[i]
  this.columnDefs.push({
    headerName: this.gridData.cols[i],
    valueGetter: scopeOutCurrIndex(i)
  })
}

如果您确实知道会返回多少列,那么您可以像这样对 columnDef 进行硬编码:

this.columnDefs = [{
    headerName: "col1",
    valueGetter: (params) => params.data[1]
},
{
    headerName: "col2",
    valueGetter: (params) => params.data[2]
},
...
]