Почему подписчик с переключателем не работает во второй раз? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть 2 набора переключателей, таких как: Да / Нет наборов.Когда пользователь выбирает «Нет» во втором наборе во второй раз, он не работает.

У меня есть подписчики «valueChanges» для обоих наборов переключателей, и они работают нормально до второго «Нет выбора».После этого второй подписчик вообще не работает.Я попытался добавить console.log или отладчик, но ничего не произошло.


  // the first subscriber for the first control
  // works fine all the time
  if (this.firstControl) {
      this.firstControl.valueChanges.pipe(takeUntil(this.onDestroy$)).subscribe(val => {
        this.checkFirstAnswer(this.firstControl);
      });
    }

    // the second subscriber for the second control
    // doesn't work for the second No selection
    if (this.secondControl) {
      this.secondControl.valueChanges.pipe(takeUntil(this.onDestroy$)).subscribe(val => {
        this.checkSecondAnswer(this.secondControl);
      });
    }

  checkFirstAnswer(firstControl: AbstractControl){
    if (firstControl.value === 'Yes'){
      this.secondControl.setValue('Yes');  
    }
  }

  checkSecondAnswer(secondControl: AbstractControl){
    if (secondControl.value === 'No' && this.firstControl.value === 'Yes') {
      this.modalDialog.errorShow('error');
      secondControl.setValue('Yes');
    }    
  }

Фактический результат: Когда пользователь нажимает Да на первом элементе управления - первый подписчик меняет значение длявторой контроль да.

Затем пользователь вручную меняет ответ с Да на Нет для второго элемента управления.Второй абонент показывает ошибку и автоматически изменяет значение на Да для второго элемента управления.

Но когда пользователь вручную выбирает Нет во второй раз для второго элемента управления, тогда ничего не происходит, и второй абонент вообще не вызывается.

Ожидаемый результат: Когдапользователь вручную выбирает Нет во второй раз для второго элемента управления, затем второй подписчик должен показать сообщение об ошибке и автоматически установить Да для второго элемента управления.

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