AgGrid RowData在Angular组件外部更新,需要重绘行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AgGrid RowData在Angular组件外部更新,需要重绘行相关的知识,希望对你有一定的参考价值。
我在Angular项目中使用ag-grid-angular
。我的app
组件包含我的主要数据模型(rowData
)和两个子组件grid
和grid-details
。 grid
组件有一个@Input
与rowData
绑定,并持有ag-grid-angular
组件,rowData
也绑定。 grid-detail
组件也有一个@Input
绑定到模型,并有一个形式,其中rowData
可以改变。
我已经在StackBlitz中抽象了这个应用程序
当我在ag-grid-angular
中更改数据时,我可以看到rowData
和app
中grid-details
的变化,这意味着组件之间的绑定属性正确。当我在rowData
中更改grid-details
时,我可以看到app
的变化,但ag-grid-angular
中的数据显示未更新。当调用gridApi
重绘行时,数据被正确显示(暗示数据也被正确绑定,因为我不需要在gridApi中再次设置行数据)。
- 如果所有数据都正确绑定,为什么
ag-grid-angular
不会自动刷新? - 调用
gridApi.redrawRows()
的简单模式是什么?我在实际实现中有多个组件,并希望某种类型捕获所有onChange
而不是为每个子组件实现一些@Output
事件发射器。
我尝试过:我试图通过Angular的gridApi.redrawRows()
实现对OnChanges
的调用,但我意识到OnChanges
生命周期钩子不会在rowData
实例中调用值更改。所以在我的情况下,当我在OnChanges
中更改数据时,grid-details
不会被调用。
这听起来像正常的角度变化检测行为。
据推测,您的rowData变量是一个数组,您正在更新数组中的项目。
但是,要将更改检测激发,您需要替换该数组的实例。所以你可以做一些像
this.rowData = [...this.rowData]
以上是关于AgGrid RowData在Angular组件外部更新,需要重绘行的主要内容,如果未能解决你的问题,请参考以下文章