我正在使用如下所示的表单数组创建复选框列表
this.myForm= this.formBuilder.group({
Year:new FormControl(),
session:new FormControl(),
select:new FormControl(),
checkboxGroup:new FormArray([])
})
使用如下所示的数组
[
{"id": 1,"Name": "A"},
{"id": 2,"Name": "B"},
{"id": 3,"Name": "C"},
{"id": 4,"Name": "D"},
{"id": 5,"Name": "E"},
{"id": 6,"Name": "F"}
]
1。当我选择选择FormControl复选框时,我想选择A,B,C复选框并禁用其他复选框并切换
2。另外,当我选择F复选框时,我想禁用所有其他复选框
我尝试的代码是
this.myForm.valueChanges.subscribe(() =>{
this.checkedList=this.myForm.getRawValue().checkboxGroup
this.selectChecked = this.myForm.getRawValue().select;
if(this.selectChecked === true){
this.myForm['controls']['checkboxGroup']['controls'][0].patchValue(true,{emitEvent:false});
this.myForm['controls']['checkboxGroup']['controls'][1].patchValue(true,{emitEvent:false});
this.myForm['controls']['checkboxGroup']['controls'][2].patchValue(true,{emitEvent:false});
this.myForm['controls'].checkboxGroup['controls'][3].disable({emitEvent:false});
this.myForm['controls'].checkboxGroup['controls'][4].disable({emitEvent:false});
this.myForm['controls'].checkboxGroup['controls'][5].disable({emitEvent:false});
}
我还有许多其他场景使用相同的复选框,这对我来说似乎是重复的。这是正确的方法还是有其他方法可以实现?