Я создаю список флажков, используя массив форм, как показано ниже
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});
}
У меня есть много других сценариев, связанных с теми же флажками, этот способ мне кажется дублированным. Это правильный путь или есть какой-то другой способ сделать это?