如何在 FormBuilder 中使用 updateOn 模糊

A-S*_*ani 8 angular-validation angular angular-forms angular-formbuilder

我有一个自定义异步验证器,我想updateOn: 'blur'使用FormBuilder以下方法设置属性:

myForm = this.formBuilder.group({
   email: ['', [Validators.required], [this.myAsyncValidator]]
   // ...
});
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它不起作用:

email: ['', [Validators.required], [this.myAsyncValidator, {updateOn: 'blur'}]]
Run Code Online (Sandbox Code Playgroud)

笔记

我不想像下面这样手动创建表单控件实例:

myForm = new FormGroup({
    email: new FormControl('', {asyncValidators: [this.myAsyncValidator]}, updateOn: 'blur')
});
Run Code Online (Sandbox Code Playgroud)

Hoa*_*Son 9

我想为这个问题添加更多答案。

这是图书馆的代码:

在此输入图像描述

因此,从您的问题来看,您似乎正在尝试设置updateOn电子邮件formControl并且正在设置 3 个参数。这是不正确的。

改变

myForm = this.formBuilder.group({
   email: ['', [Validators.required], [this.myAsyncValidator]]
   // ...
});
Run Code Online (Sandbox Code Playgroud)

myForm = this.formBuilder.group({
   email: ['', {validators: Validators.required, asyncValidators: this.myAsyncValidator, updateOn: 'blur'}]
   // ...
});
Run Code Online (Sandbox Code Playgroud)


Naw*_*rif 7

有两种方法可以实现-

myForm = this.formBuilder.group({email: this.formBuilder.control('', {updateOn: 'blur', validators: [], asyncValidators: []})})
Run Code Online (Sandbox Code Playgroud)

或者,

myForm = this.formBuilder.group({email: ['', {updateOn: 'blur', validators:[], asyncValidators: []}]})
Run Code Online (Sandbox Code Playgroud)

  • 自 Angular 14 以来,第二个选项似乎不再起作用。 (2认同)