Reactive Form Array - включение и отключение - PullRequest
0 голосов
/ 30 апреля 2019

Я создаю список флажков, используя массив форм, как показано ниже

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

У меня есть много других сценариев, связанных с теми же флажками, этот способ мне кажется дублированным. Это правильный путь или есть какой-то другой способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...