为什么单选按钮订户第二次不工作?

时间:2019-03-27 00:15:02

标签: angular typescript angular-material angular-reactive-forms

我有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');
    }    
  }

实际结果: 当用户在第一个控件上单击“是”时,第一个订户将第二个控件的值更改为“是”。

然后,用户将第二个控件的答案从“是”手动更改为“否”。第二个订阅者显示错误,并为第二个控件自动将值更改为“是”。

但是,当用户第二次为第二个控件手动选择“否”时,则什么也没有发生,并且第二个订阅者根本没有被呼叫。

预期结果: 当用户第二次为第二个控件手动选择“否”时,第二个订户应显示错误消息并为第二个控件自动设置“是”。

0 个答案:

没有答案