我的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的状态?
答案 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();
});
}
希望这会有所帮助:)