Javascript 带有自定义表单级别验证程序和更新的角度反应式表单';模糊';选项没有';t工作

Javascript 带有自定义表单级别验证程序和更新的角度反应式表单';模糊';选项没有';t工作,javascript,angular,typescript,validation,angular-reactive-forms,Javascript,Angular,Typescript,Validation,Angular Reactive Forms,我在组合时遇到问题: 角反应形式 表单级别的自定义验证器(跨域验证器) “updateOn”选项设置为“blur”的用法 我做了一个简单的stackblitz来说明问题: 案例1:KO “updateOn”选项设置为“blur” 我们可以看到,只有当我们不关注输入文本字段时,特定的字段验证器(必需/电子邮件)才被正确地触发 但是跨域全局验证器(检查字段是否相同)没有启动 情况2:正常 未定义“updateOn”选项 我们可以看到,每次输入文本字段中的值发生变化时,特定字段验证器(必需/电子

我在组合时遇到问题:

  • 角反应形式
  • 表单级别的自定义验证器(跨域验证器)
  • “updateOn”选项设置为“blur”的用法
我做了一个简单的stackblitz来说明问题:

案例1:KO

“updateOn”选项设置为“blur”

我们可以看到,只有当我们不关注输入文本字段时,特定的字段验证器(必需/电子邮件)才被正确地触发

但是跨域全局验证器(检查字段是否相同)没有启动

情况2:正常

未定义“updateOn”选项

我们可以看到,每次输入文本字段中的值发生变化时,特定字段验证器(必需/电子邮件)都会被正确地实时触发

并且跨字段全局验证程序(检查字段是否相同)已正确启动

我想我的自定义验证器或我使用它的方式有问题,但我无法找出原因…


谢谢你的帮助

如果您查看一下stackblitz,您会发现在
buildForm()
buildForm2()
中,您使用的是带有签名的
formbuilder.group()
的不推荐重载:

(controlsConfig: { [key: string]: any; }, options: { [key: string]: any; })
您应该使用类型安全版本:

(controlsConfig: {
    [key: string]: any;
}, options?: AbstractControlOptions)
这在实践中意味着什么?表单的配置部分应具有
验证器
,而不是
验证器
(注意复数版本):


然后一切都将按预期工作,并且
updateOn
将实际用于验证器。

wow,这看起来确实工作得很好!很抱歉,我错过了这个不推荐的方法。非常感谢你的帮助
validators: CustomValidator.equalValueValidator("email", "confirmEmail"),