Ag grid applyTransaction移除不使用id

Ag grid applyTransaction移除不使用id,ag-grid,ag-grid-angular,Ag Grid,Ag Grid Angular,我在Angular9项目中使用ag网格。当后端请求解析时,我正在使用事务在网格中执行CRUD操作。我需要自己提供RowNodeId,我不想使用对象引用,因为我有很大的数据集 问题是,我已经提供了ID,我可以在网格中添加/更新项目,但我无法删除该项目。在docit中,您只需要提供id就可以删除该项,但我得到了以下错误 这是密码 class HostAppListPage { @ViewChild('agGrid', {static: true}) grid:AgGridAngular; c

我在Angular9项目中使用ag网格。当后端请求解析时,我正在使用事务在网格中执行CRUD操作。我需要自己提供RowNodeId,我不想使用对象引用,因为我有很大的数据集

问题是,我已经提供了ID,我可以在网格中添加/更新项目,但我无法删除该项目。在docit中,您只需要提供id就可以删除该项,但我得到了以下错误

这是密码

class HostAppListPage
{

@ViewChild('agGrid', {static: true}) grid:AgGridAngular;


constructor()
{
}


ngOnInit()
{
    this.grid.getRowNodeId = (data) => {
        return data.entityId;
    };


    this.columns = [
        {headerName: 'App Name', field: 'name', rowDrag: true, headerCheckboxSelection: true, checkboxSelection: true},
        {headerName: 'App Id', field: 'id'},
        {headerName: 'Compatibility', field: COMPATIBILITY'},
        {headerName: 'Creation', field: 'createdAtToString'},
        {headerName: 'Last Update', field: 'updatedAtToString'}
    ];
}


deleteRow()
{
    let ids = this.gridApi.getSelectedNodes()
           // .map((row) => {
               // return {id: row.entityId}
               // return row.entityId;
           // });


    console.log(ids);
    this.grid.api.applyTransaction({remove: ids});
}
我尝试了使用和不使用map语句,都没有效果
但是我的添加和更新工作正常。

用以下代码替换地图

.map((row) => {
   return {entityId: row.data.entityId};
});

它应该是我在getRowNodeId函数中设置的同一字段(entityId)

在典型情况下,如果不定义
getRowNodeId
,则应该能够:

const removeData: any[] = [{id: rowNode0.id}, {id: rowNode1.id}, ...];
applyTransaction({remove: removeData});
其中,rowNode0、rowNode1等是要删除的节点

但是,当您提供自己的
getRowNodeId
回调时,ag grid将通过对您提供的数据应用回调来获取id。因此,数据中的名称必须与回调中使用的名称匹配。这就是为什么
return{id:row.entityId}
不起作用,但是
return{entityId:row.entityId}
起作用

换句话说,如果定义:

this.grid.getRowNodeId = (data) => {
    return data.column1 + data.column5 + data.column2;
};
那么就需要提供

const removeData: any[] = [
    {column1: 'a1', column2: 'b1', column5: 'c1'},
    {column1: 'a2', column2: 'b2', column5: 'c2'},
    {column1: 'a3', column2: 'b3', column5: 'c3'},
];

因此,ag网格将拥有通过给定的
getRowNodeId

查找id所需的所有名称。好的,我发现了我的错误。我需要在map return{entityId:row.data.entityId}内进行以下更改;