You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:22:34