2017-02-16 103 views
0

我正努力在訂閱observable時刷新ag-grid。Observable訂閱刷新ag-grid

我有以下一段代碼,效果很好。

 this.marketConfigs = this._regionProductConfigService.getMarketConfig();    
      this.gridOptions.columnDefs = this.createColumnDefs(); 
      this.gridOptions.rowData = this.marketConfigs; 

但因爲我試圖把在AG-格列下拉,我想列配置,一旦我們收到的數據被創建。所以我改變了以下代碼:

this._refDataService.getAllCurrencies().subscribe(
      (data: ICurrency[]) => { 
       this.financingCurrencies = data;    
       this.marketConfigs = this._regionProductConfigService.getMarketConfig();    
       this.gridOptions.columnDefs = this.createColumnDefs(); 
       this.gridOptions.rowData = this.marketConfigs;     
       this.gridOptions.enableColResize = true; 
       this.gridOptions.api.refreshView(); 
      }, 
      err => console.log(err) 
     ); 

但它不顯示任何東西在網格中。有人可以幫忙嗎?

+0

你可以檢查是否有draw()方法嗎?所以有點像this.gridOptions.draw() –

+0

不,沒有draw()方法。理想情況下,this.gridOptions.api.refreshView()應該強制網格重繪自己。 –

回答

0

gridOptions.colDefs和gridOptions.rowData是「只讀一次」的屬性 - 它們是在網格初始化時讀取的,而不是再次查看。

要執行行或列的動態post-init設置,您需要使用API​​。

變化

this.gridOptions.columnDefs = this.createColumnDefs(); 
this.gridOptions.rowData = this.marketConfigs;  

要這樣:

this.gridOptions.api.setColumnDefs(this.createColumnDefs()); 
this.gridOptions.setRowData(this.marketConfigs); 

和預期它應該工作。請注意,如果您按照以上所述使用API​​,則不需要調用refreshView - 上述方法將爲您執行此操作。

+0

它像魔術一樣工作:)謝謝.. –