【问题标题】:Refresh ag-grid on Observable subscribe在 Observable 订阅上刷新 ag-grid
【发布时间】:2017-02-16 20:16:48
【问题描述】:

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

我有以下一段运行良好的代码。

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

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

【问题讨论】:

  • 你能检查一下是否有draw()方法吗?所以有点像 this.gridOptions.draw()
  • 不,没有 draw() 方法。理想情况下 this.gridOptions.api.refreshView() 应该强制网格重绘自己。

标签: angular rxjs ag-grid


【解决方案1】:

gridOptions.colDefs 和 gridOptions.rowData 是“读取一次”属性 - 它们在 Grid 初始化时被读取,不再被查看。

要对行或列进行动态初始化后设置,您需要使用 API。

改变

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

到这里:

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

它应该按预期工作。请注意,如果您按照上述方式使用 API,则无需调用 refreshView - 上述方法将为您完成。

【讨论】:

  • 如果网格的 rowData 绑定到一个 observable 怎么办?加班会改变吗?
  • @EakanGopalakrishnan 现在有点晚了,但是您可以正常绑定行数据,并在模板中声明如下:[rowData]="rowData | async"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 2022-10-14
  • 2021-04-17
  • 2018-04-30
  • 2018-05-31
  • 2017-08-31
  • 2018-09-23
相关资源
最近更新 更多