Angular中移除FormControl验证器后仍显示required错误,如何处理?
Angular表单控件莫名被标记为required,未设置验证器也无法清除错误
我遇到的问题是:Angular始终把表单控件标记为required,但我根本没给它设置这个验证器。
我最初的操作步骤如下(用deepCopy避免引用传递问题):
const formGroup = this.allowances() formGroup.removeControl('allowanceEndDate') const newFormGroup = deepCopy(formGroup) newFormGroup.addControl( 'allowanceEndDate', new FormControl(null, { nonNullable: false, validators: []}) ) console.log(newFormGroup)
执行后结果不符合预期:控件仍然被标记为required: true,errors里显示{required: true},但查看validators列表,并没有Validators.required。
更新
我试了各种方法,都没法清除这个{required: true}错误:
const lastEndDateControl = lastformGroup?.get('allowanceEndDate') console.log(lastEndDateControl) if (lastEndDateControl) { lastEndDateControl.removeValidators(Validators.required); const err = lastEndDateControl.errors console.log(err) clearControlError(lastEndDateControl) lastEndDateControl.reset() console.log(lastEndDateControl) //lastEndDateControl.updateValueAndValidity(); } function clearControlError( control: AbstractControl ): void { const err = control.errors; if (err) { delete err['required']; if (!Object.keys(err).length) { control.setErrors(null); } else { control.setErrors(err); } } }
内容的提问来源于stack exchange,提问作者Sachin
相关产品推荐
相关产品推荐

