【问题标题】:Use updateOn: 'blur' in Angular Reactive Forms在 Angular 反应式表单中使用 updateOn: 'blur'
【发布时间】:2018-09-04 13:11:49
【问题描述】:

我想仅在用户离开字段时才开始验证表单字段 (onblur)。

我正在尝试这种方式:

    this.profileForm = this.fb.group({
                firstName: ['initial value',
                    [Validators.required, Validators.minLength(2), forbiddenNameValidator(/bob/i)],
                    [forbiddenNameValidatorAsync()],
                    { updateOn: 'blur' }
                ],
                lastName: ['b']
            });

但是这种方式是行不通的。 验证(同步和异步)在 onChange 期间执行。

我还想问您如何通过检查lastName 来验证姓名。

示例:如果 name 字段与姓氏相同,我希望禁用 name 字段(仅 name 字段,不是整个表单,而不是两个字段)。

【问题讨论】:

  • 你能把html和字段放在一起吗?
  • 预计验证器至少会被调用两次
  • 如果不止提供stackBlitz
  • 糟糕,如果您使用的是FormBuilder,此选项将不起作用

标签: angular


【解决方案1】:

设置参数为AbstractControlOptions

    firstName: ['initial value',{
         validators: [Validators.required, Validators.minLength(2), forbiddenNameValidator(/bob/i)],
         asyncValidators: [forbiddenNameValidatorAsync()],
         updateOn: 'blur'
    }],

这里的例子https://stackblitz.com/edit/angular-hdna17?file=src%2Fapp%2Fhello.component.ts

【讨论】:

  • 谢谢,它有效。不幸的是,对象不是类型,内容辅助对我没有帮助。
  • 我可以给你一个异步验证器的样本吗...是我们用于用户名和其他东西的吗?
  • 延迟更新怎么样...例如在我的选择中我选择美国国家 2 秒
  • 您好,请问有解决方案你更新并提交模糊吗?
猜你喜欢
  • 2021-07-10
  • 2019-12-18
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 2021-01-12
  • 2019-12-30
  • 2019-02-01
相关资源
最近更新 更多