gpt4 book ai didi

angular - 在 Angular 2+ 中对 FormArray 对象进行排序的理想方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 17:36:43 24 4
gpt4 key购买 nike

我有一个由多个表单组组成的 formArray。我需要根据数组中每个表单组中存在的 bool 字段对数组进行动态排序。

bool 字段是一个复选框,在任何给定时间点只能选中一个复选框(模拟单选按钮)。因此,当单击复选框时,我需要根据选中的复选框对 formArray 进行排序。

我知道文档建议不要弄乱 formArray 中的 AbstractControls[],那么动态排序数组的理想方法是什么?

我尝试对数组进行切片并将控件设置回 formArray,但我一直收到错误消息“必须为名称为“primaryIndi​​cator”的表单控件提供一个值。

const abstractControls = this.formArray.controls
.slice()
.sort((a, b) => {
return (a as FormGroup).get('primaryIndicator').value ? -1 : (b as FormGroup).get('primaryIndicator').value ? 1 : 0;
});
this.formArray.setValue(abstractControls);

如果这不是正确的方法,那么解决这种情况的最佳方法是什么?

最佳答案

我认为这不是最好的方法,但是从 formarray 获取值,用它做任何你想做的事,然后把它们修补回来。

var myArray = this.formArray.value;
//do sorting here with myArray.sort
this.formArray.patchValue(myArray)

不要更改 this.formArray 的长度和架构。 Patchvalue 只能修补具有相同结构的值。

关于angular - 在 Angular 2+ 中对 FormArray 对象进行排序的理想方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49164800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com