反应性表单数组启用和禁用

时间:2019-04-30 14:27:19

标签: typescript angular6 angular-reactive-forms

我正在使用如下所示的表单数组创建复选框列表

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});
      }

我还有许多其他场景使用相同的复选框,这对我来说似乎是重复的。这是正确的方法还是有其他方法可以实现?

0 个答案:

没有答案