ag-grid API在Angular 2中未定义

时间:2017-02-20 15:31:19

标签: angular ag-grid

我在ngOnInit方法内的Angular 2应用程序中使用ag-grid API。

在onGridReady事件like mentioned in this post中,API可以访问,并且工作正常。

但是,我还需要使用以下方法之一调用API:

  • onRowDataChanged
  • onNewColumnsLoaded
  • onModelUpdated

这不起作用,因为API未定义。此外,出于某种原因,我还可以在onCellDoubleClicked和onCellClicked事件中调用API。

这似乎是一个错误。有谁知道发生了什么?

请参阅下面的代码:

Drive.DriveApi.getAppFolder(driveApiClient)
            .createFile(driveApiClient, changeSet, null)

2 个答案:

答案 0 :(得分:0)

好的,这就是我如何运作的。

  • 首先,捕获角度组件的此引用,以确保您不会遇到JavaScript范围问题。

  • 然后,在onGridReady事件中可用时捕获API引用

  • 最后,仅在堆栈为空后调用API,使用setTimeout函数推迟所有API调用

所以现在代码看起来或多或少像这样:

...
let self = this;
...
onGridReady: function (param) {
    self.api = param.api;
},

onRowDataChanged: function (param) {
    setTimeout(() => {
        self.api.sizeColumnsToFit()
        ...more API calls...
    }, 0);
},
...

答案 1 :(得分:0)

出现问题时,ag grid将不会正确创建api,因此api将是undefined

在我的情况下,控制台出现错误,因为我忘记了导入'ag-grid-enterprise'(我在使用rowModelType: 'serverSide'),因此无法初始化。

因此,请检查选项是否有效以及在控制台上是否给您任何错误。