ag-grid angular 初始化后行顺序错误

ag-grid angular wrong row order after initialization

我在 angular 的 ag-grid 中遇到了奇怪的行为,不知道是我做错了什么还是一个错误。

初始化 aggrid 后
this.gridOptions = {
  enableSorting: true,
  rowHeight: 50,
  suppressDragLeaveHidesColumns: true,
  enableColResize: true,
  domLayout: 'autoHeight',
  rowSelection: 'single',
};

  <ag-grid-angular
    #agGrid
    [rowData]="articleArray"
    [gridOptions]="gridOptions"
    (cellClicked)="showDetails($event)"
    (gridReady)="onGridReady()"
    (modelUpdated)="onModelUpdated()"
    (gridSizeChanged)="sizeToFit()"
  ></ag-grid-angular>

并通过

获取网格中行的结果顺序
  updateArticleOrder() {
    const result: string[] = [];
    this.gridOptions.api.forEachNodeAfterFilterAndSort(rowNode => result.push(rowNode.data.id));
    this.articleOrderChanged$.emit(result);
  }

我注意到顺序与 [rowData]="articleArray" 中使用的原始输入不同。准确地说,11 个项目已移至网格底部,网格从原始索引 11 开始。这是为什么,我该如何避免?排序后 updateArticleOrder()onModelUpdated() 中被调用,我再次获得正确的顺序,当我单击第一行时显示索引 0。

[编辑] 我注意到我只在初始化网格时遇到这个问题。当我的文章数组在网格已经可见后更新时,this.gridOptions.api.forEachNodeAfterFilterAndSort 以正确的顺序给我新项目。

这可能是使用 [domLayout]="'autoHeight'" 引起的错误。作为临时解决方案,请尝试将 [rowBuffer] 设置为某个较大的数字,例如 [rowBuffer]="10000"