【问题标题】:Ag-grid: Update filterParams to change possible filter valuesAg-grid:更新 filterParams 以更改可能的过滤器值
【发布时间】:2020-11-04 14:50:30
【问题描述】:

我们有一个自定义角度组件作为特定列的过滤器,它列出了该列的可能过滤器值。可能的过滤器值可以动态变化,列表可以变长或变短。所以我们需要更新具体colDeffilterParams。然而问题是,我们重新分配了网格的columnDefs,这会清除其他过滤器,不适合我们。我们正在寻找类似gridOptions.api.setFilterModel 的东西,但要设置filterParams 并重新创建过滤器组件。

仅更改特定 colDef 的 filterParams 并销毁过滤器无济于事。当它再次被重新创建时,在agInit 中它接收到旧的filterParams。这可能是因为更改检测没有检测到columnDefinition 中的任何更改。

是否可以使用 ag-grid 动态更新 filterParams 而无需重新分配 columnDefs

【问题讨论】:

  • 我建议您将Observable<Option[]> 传递给filterParams。然后你就不需要更新整个 columnDef。您只需要将动态数据传递到 Observable 中,它将反映在您的自定义过滤器中。
  • @DurgeshPal 我也遇到了这种情况。你到底是什么意思? filterParams: (params) => {我的过滤器参数的代码}。我会设置一个可观察的......每次 rowdata 更新时返回吗?或以某种方式覆盖 filterParams 所做的事情和 filterParams: this.rowData.subScribe()??
  • 这取决于您获取 filterParams 的方式。它可能来自 rowData 或来自某些 api。您只需要设置一个将传递给您的 filterParams 的 Observable。 Observable 将在数据提供给它时​​自动订阅。您还可以在 stackblitz 上分享最少的可复现代码以加深理解。

标签: angular ag-grid


【解决方案1】:

我也遇到了同样的事情,我发现更新列 defs 甚至没有让 filterParams 重新运行。我现在正在处理它,但我知道你可以调用 grid 方法:

gridApi.destroyFilter('colID') on each column to destroy their filters.

但是,这不会关闭过滤器,您必须深入研究一些网格方法才能做到这一点(或更新 colDefs)。我认为有一种方法可以预先获取所有过滤器模型并在破坏过滤器后尝试重新应用它们,但这可能会陷入黑暗而可怕的兔子洞。

【讨论】:

    猜你喜欢
    • 2016-09-20
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2018-07-11
    • 2019-02-12
    • 2017-12-18
    • 2016-10-03
    相关资源
    最近更新 更多