refreshCells在Ag-Grid中不起作用 - Angular 2

时间:2016-10-16 21:32:30

标签: angular typescript ag-grid

我是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"。

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

  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()方法会运行但不会因某种原因更新单元格值。

1 个答案:

答案 0 :(得分:0)

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

我要感谢他们。

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

所以代码已经进入了圈子。