【发布时间】:2021-05-11 01:19:04
【问题描述】:
我有一个mat-table,其中datasource 是MatTableDataSource<FormGroup>。代表每一行的FormGroup 显然是另一个FormGroup 的FormArray 属性。所以,表单的架构大致是这样的:
FormGroup(persons: FormArray(FormGroup[firstName, lastName]))
我能够通过以下方式覆盖过滤功能:
this.dataSource.filterPredicate = someCustomFilterFunction
但是,如果我尝试使用以下命令覆盖排序:
this.dataSource.data.sort((a: FromGroup, b: FormGroup): number...)
我的表格很混乱。事实上,看起来其中一个表单控件认为它是另一行中的另一个表单控件。
如果我不必在已经排序的状态下重新创建整个排序,就没有办法对其进行排序吗?
【问题讨论】:
-
请分享您的代码,然后才能回答您的问题
-
看起来没有对 FormArray 中的项目进行排序的好方法:stackoverflow.com/questions/49164800/…
-
刚刚找到我的答案...不可能像常规数组一样对其进行排序(FormArray api doc 中的最后一段):“从表单数组中添加或删除控件要更改数组中的控件, 使用 FormArray 本身中的 push, insert, removeAt 或 clear 方法。这些方法确保控件在表单的层次结构中正确跟踪。不要修改用于直接实例化 FormArray 的 AbstractControls 数组,因为这会导致奇怪和意外的行为例如损坏的变更检测。”
标签: angular angular-material angular-reactive-forms