我有一个formArray,其中包含多个表单组。我需要根据数组中每个表单组中存在的布尔字段动态排序该数组。
布尔字段是复选框,任何时候只能选中一个复选框(模拟单选按钮)。因此,当单击复选框时,我需要基于所选的复选框对formArray进行排序。
我知道文档建议不要干扰formArray中存在的AbstractControls[],那么动态排序数组的理想方式是什么?
我尝试过切片数组并将控件设置回formArray,但我一直收到错误“必须为名称为'primaryIndicator'的表单控件提供值。”
如果这不是正确的方法,那么解决这种情况的最佳方法是什么?
布尔字段是复选框,任何时候只能选中一个复选框(模拟单选按钮)。因此,当单击复选框时,我需要基于所选的复选框对formArray进行排序。
我知道文档建议不要干扰formArray中存在的AbstractControls[],那么动态排序数组的理想方式是什么?
我尝试过切片数组并将控件设置回formArray,但我一直收到错误“必须为名称为'primaryIndicator'的表单控件提供值。”
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);
如果这不是正确的方法,那么解决这种情况的最佳方法是什么?