我在ngOnInit方法内的Angular 2应用程序中使用ag-grid API。
在onGridReady事件like mentioned in this post中,API可以访问,并且工作正常。
但是,我还需要使用以下方法之一调用API:
这不起作用,因为API未定义。此外,出于某种原因,我还可以在onCellDoubleClicked和onCellClicked事件中调用API。
这似乎是一个错误。有谁知道发生了什么?
请参阅下面的代码:
Drive.DriveApi.getAppFolder(driveApiClient)
.createFile(driveApiClient, changeSet, null)
答案 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'
),因此无法初始化。
因此,请检查选项是否有效以及在控制台上是否给您任何错误。