refreshCells 在 Ag-Grid 中不工作 - Angular 2

refreshCells Not working in Ag-Grid - Angular 2

我有一个 Angular 2 项目 (2.0.0-RC.4) 和 运行 ag-grid (5.0.1)。

我正在尝试使用 refreshCells() 方法刷新网格中的特定单元格,而不重置行。

我在 Ag-Grid 文档中看到了一个示例,它展示了如何使用 refreshCells()

https://www.ag-grid.com/javascript-grid-refresh/

我试图创建一个预期能满足我需要的副本,但它不起作用。

网格拒绝刷新单元格。

  ChangeValue() {
    var updatedNodes = [];

    this.gridOptions.api.forEachNode((rowNode: RowNode) => {
      let data = rowNode;

      if(data.data.timestamp == "t") {
        data.data.asset *= 2;
        updatedNodes.push(rowNode);
      }
    });
    console.log(updatedNodes);
    this.gridOptions.api.refreshRows(updatedNodes);
    this.gridOptions.api.refreshView();
  }

我上面显示的方法链接到一个按钮,所以一旦我点击按钮它应该增加与时间戳匹配的 rowNode 内的资产 "t"。

有关更多详细信息,下面的钩子和构造函数用于将数据样本添加到网格并创建 columnDef。

  ngAfterViewChecked() {

    let dataSample: any[] = [
      {
        timestamp: "t",
        asset: 100
      }
    ]

    this.gridOptions.api.setRowData(dataSample);
    // Hide ag-grid overlay
    this.gridOptions.api.hideOverlay();
  }

  constructor() {
    this.columnDefs = [
      {
        headerName: 'Timestamp',
        field: 'timestamp'
      }, {
        headerName: 'Asset',
        field: 'asset'
      }
    ]
  }

问题是一旦我点击按钮,ChangeValue() 方法运行但由于某种原因没有更新单元格值。

在 Ag-Grid 团队的帮助下,我找到了导致此问题的原因。

我要感谢他们。

refreshRows() 导致重绘以触发器结束的视图 ngAfterViewChecked() 这将重置网格中的数据。

所以代码 运行 变成了圆圈。