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

Angular使用自定义验证器时formBuilder.group显示废弃如何解决

问题产生原因

Angular v14及以上版本中,FormBuilder.group() 的旧版配置签名已被标记为废弃:旧签名允许在第二个配置参数中传入单数形式的validator、asyncValidator字段设置表单组级验证器,该设计不支持多验证器数组传入,灵活性不足,因此被官方替换为新签名。
代码中配置对象使用了单数validator字段传入自定义验证器,匹配到了即将移除的旧方法签名,因此触发废弃提示。当前验证逻辑可正常运行,但后续框架大版本升级后会直接抛出语法错误。
自定义验证器ConfirmedValidator本身逻辑无问题,无需修改。

修复方案

仅需将formBuilder.group()第二个配置参数内的单数validator字段,修改为复数形式的validators即可,修正后的表单初始化代码如下:

ngOnInit() {
  // Create user password form
  this.cupForm = this.formBuilder.group({
    password: [null, Validators.pattern('^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\\w\\s]).{8,}$')],
    confirm_password: [null, Validators.required]
  }, {
    validators: ConfirmedValidator('password', 'confirm_password')
  });
}

新签名支持直接传入验证器数组配置多个表单组级验证器,例如需要新增其他跨字段校验规则时可按如下写法扩展:

validators: [
  ConfirmedValidator('password', 'confirm_password'),
  // 其他表单组级验证器
]

补充:如果表单组需要配置异步验证器,旧版单数形式的asyncValidator字段也需要同步改为复数形式的asyncValidators。

内容的提问来源于stack exchange,提问作者user10114552

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 20:48:28