У меня есть 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');
}
}
Фактический результат: Когда пользователь нажимает Да на первом элементе управления - первый подписчик меняет значение длявторой контроль да.
Затем пользователь вручную меняет ответ с Да на Нет для второго элемента управления.Второй абонент показывает ошибку и автоматически изменяет значение на Да для второго элемента управления.
Но когда пользователь вручную выбирает Нет во второй раз для второго элемента управления, тогда ничего не происходит, и второй абонент вообще не вызывается.
Ожидаемый результат: Когдапользователь вручную выбирает Нет во второй раз для второго элемента управления, затем второй подписчик должен показать сообщение об ошибке и автоматически установить Да для второго элемента управления.