【发布时间】:2020-11-04 14:50:30
【问题描述】:
我们有一个自定义角度组件作为特定列的过滤器,它列出了该列的可能过滤器值。可能的过滤器值可以动态变化,列表可以变长或变短。所以我们需要更新具体colDef的filterParams。然而问题是,我们重新分配了网格的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 上分享最少的可复现代码以加深理解。