2017-02-20 94 views
0

我在ngOnInit方法內的Angular 2應用程序中使用了Ag-grid API。ag-grid API在Angular 2中未定義

在onGridReady事件like mentioned in this post中,API是可訪問的,事情工作正常。

不過,我需要調用API下面的方法之一,也是:

  • onRowDataChanged
  • onNewColumnsLoaded
  • onModelUpdated

這是行不通的,因爲API是未定義。另外,出於某種原因,我也可以在onCellDoubleClicked和onCellClicked事件中調用API。

這似乎是一個錯誤。有誰知道發生了什麼事?

請查看代碼波紋管:

ngOnInit() { 

    this.gridOptions = <GridOptions>{ 

     onGridReady: function (param) { 
      param.api.sizeColumnsToFit(); // works fine 
     }, 

     onCellDoubleClicked: function (param) { 
      param.api.sizeColumnsToFit(); // works fine 
     }, 

     onRowDataChanged: function (param) { 
      param.api.sizeColumnsToFit(); // API is undefined 
     }, 
    }; 
} 
+0

請提供一些代碼示例 –

+0

你可以看到我的SOLUT離子在這裏: http://stackoverflow.com/a/44094147/2372205 – Guenther

回答

0

好吧,這裏是我得到了它的工作。

  • 首先,捕獲此角度組件的引用,以確保您不會遇到JavaScript範圍問題。

  • 然後,捕獲API參考時,可在onGridReady事件

  • 最後裏面,只能調用API後堆棧是空的,推遲所有的API與setTimeout函數

調用

所以,現在的代碼看起來或多或少是這樣的:

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

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