Angular Ag grid:更新过滤器参数以更改可能的过滤器值
我们有一个自定义的角度组件作为特定列的过滤器,它列出了该列可能的过滤器值。可能的筛选器值可以动态更改,列表可以变长或变短。因此,我们需要更新特定的Angular Ag grid:更新过滤器参数以更改可能的过滤器值,angular,ag-grid,Angular,Ag Grid,我们有一个自定义的角度组件作为特定列的过滤器,它列出了该列可能的过滤器值。可能的筛选器值可以动态更改,列表可以变长或变短。因此,我们需要更新特定的colDef的filterParams。然而,问题是,我们重新分配了网格的columnDefs,这会清除其他过滤器,不适合我们。我们要找的是类似这样的gridOptions.api.setFilterModel,但要设置filterParams并重新创建过滤器组件 仅更改特定colDef的过滤器参数并销毁过滤器没有帮助。重新创建时,在agInit中,它
colDef
的filterParams
。然而,问题是,我们重新分配了网格的columnDefs
,这会清除其他过滤器,不适合我们。我们要找的是类似这样的gridOptions.api.setFilterModel
,但要设置filterParams
并重新创建过滤器组件
仅更改特定colDef
的过滤器参数并销毁过滤器没有帮助。重新创建时,在agInit
中,它将接收旧的filterParams
。这可能是因为更改检测没有检测到列定义中的任何更改
ag grid是否有任何方法可以动态更新filterParams
,而无需重新分配columnDefs
?我也在做同样的事情,我发现更新columnDefs甚至不能让filterParams重新运行。我现在正在研究它,但我知道您可以调用grid方法:
gridApi.destroyFilter('colID') on each column to destroy their filters.
然而,这并不会关闭过滤器,因此您必须深入研究一些网格方法来实现这一点(或更新colDefs)。我认为有一种方法可以事先获取所有过滤器模型,并在破坏过滤器后尝试重新应用它们,但这可能会陷入一个黑暗而可怕的兔子洞。我也有同样的事情,我发现更新列defs甚至不能让过滤器参数重新运行。我现在正在研究它,但我知道您可以调用grid方法:
gridApi.destroyFilter('colID') on each column to destroy their filters.
然而,这并不会关闭过滤器,因此您必须深入研究一些网格方法来实现这一点(或更新colDefs)。我认为有一种方法可以事先获取所有过滤器模型,并在破坏过滤器后尝试重新应用它们,但这可能会陷入一个黑暗而可怕的兔子洞。我建议您将可观察的传递到过滤器参数中。这样就不需要更新整个columnDef。您只需将动态数据传递到可观察对象,它将反映在您的自定义过滤器中。@DurgeshPal我也遇到过这种情况。你这到底是什么意思?filterParams:(params)=>{返回传单参数的我的代码}。我是否会设置一个可观察对象,它在每次rowdata更新时返回?或者以某种方式覆盖filterParams所做的和filterParams类似的事情:this.rowData.subScribe()?这取决于您获取filterParams的方式。它可能来自rowData或某些api。您只需设置一个可观察对象,该对象将传递给filterParams。Observable将在向其提供数据时自动订阅。您还可以在stackblitz上共享最小可复制代码以获得更多了解。我建议您将可观察的
传递到过滤器参数中。这样就不需要更新整个columnDef。您只需将动态数据传递到可观察对象,它将反映在您的自定义过滤器中。@DurgeshPal我也遇到过这种情况。你这到底是什么意思?filterParams:(params)=>{返回传单参数的我的代码}。我是否会设置一个可观察对象,它在每次rowdata更新时返回?或者以某种方式覆盖filterParams所做的和filterParams类似的事情:this.rowData.subScribe()?这取决于您获取filterParams的方式。它可能来自rowData或某些api。您只需设置一个可观察对象,该对象将传递给filterParams。Observable将在向其提供数据时自动订阅。您还可以在stackblitz上共享最小可复制代码,以获得更多理解。