Angular 8反应形式验证器

时间:2019-11-23 16:12:34

标签: angular-reactive-forms angular8 angular-forms angular-validation

我的Angular 8应用中有一个FormControl,如下所示:

this.closingOrderFormGroup = this._fb.group({
   final_price: new FormControl('', [ Validators.required ] ),
});

我尝试根据以下单选按钮检查动态添加/删除 Validators.required

radioChange( event ) { 
    const finalPriceControl: any = this.closingOrderFormGroup.get('final_price');

    if ( event.value == 'completed' ) {
      finalPriceControl.setValidators([Validators.required]);
    }
    else if ( event.value == 'rejected' ) {
      finalPriceControl.setValidators(null);
    }
  }

但是在将Validators设置为null之后,FormControl的“状态”仍然无效。 我应该如何更改FormControl的状态?

1 个答案:

答案 0 :(得分:1)

您可以订阅角电抗形式的值更改。

ngOnInit() {
    this.loginForm = this.fb.group({
        final_price: ['', [ Validators.required ] ]
    });

    this.formControlValueChanged();

}

//以这种方式订阅

formControlValueChanged() {
    const finalPriceControl = this.loginForm.get('final_price');
    this.loginForm.get('final_price').valueChanges.subscribe(
        (mode: string) => {
            console.log(mode);
            if (mode === 'completed') {
                finalPriceControl.setValidators([Validators.required]);
            } else if (mode === 'rejected') {
                finalPriceControl.clearValidators();
            }
            finalPriceControl.updateValueAndValidity();
        });
}
  

希望这会有所帮助:)