在 Observable 订阅上刷新 ag-grid

Refresh ag-grid on Observable subscribe

我正在努力刷新 ag-grid 以订阅 observable。

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

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

但是因为我试图在 ag-grid 的列中放置一个下拉列表,所以我希望在我们收到数据后创建列配置。所以我将代码更改为以下内容:

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)
        );  

但是它在网格中没有显示任何东西。有人可以帮忙吗?

gridOptions.colDefs 和 gridOptions.rowData 是 "read once" 属性 - 它们在 Grid 初始化时读取,不会再次查看。

要对行或列进行动态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 - 上面的方法将为您完成。