首页 > 解决方案 > 期望验证器返回 Promise 或 Observable

问题描述

我正在尝试对 Angular 5 进行自定义验证,但遇到以下错误

Expected validator to return Promise or Observable

如果值与所需的值不匹配,我只想向表单返回错误,这是我的代码:

这是我的表单所在的组件

  constructor(fb: FormBuilder, private cadastroService:CadastroService) {
    this.signUp = fb.group({
      "name": ["", Validators.compose([Validators.required, Validators.minLength(2)])],
      "email": ["", Validators.compose([Validators.required, Validators.email])],
      "phone": ["", Validators.compose([Validators.required, Validators.minLength(5)])],
      "cpf": ["", Validators.required, ValidateCpf]
    })     
   }

这段代码在我想要实现的验证文件中:

import { AbstractControl } from '@angular/forms';

export function ValidateCpf(control: AbstractControl){
    if (control.value == 13445) {
        return {errorCpf: true}
    }
    return null;
}

这种类型的验证是否仅适用于可观察对象,或者我可以在没有承诺或可观察的情况下进行验证吗?

标签: javascriptangularangular5angular-formsangular-validation

解决方案


这意味着您必须在数组中添加多个验证器

. 例子:

有错误

profileFormGroup = {
  budget: [null, Validators.required, Validators.min(1)]
};

上面一个会抛出错误,验证器返回 Promise 或 Observable

使固定:

profileFormGroup = {
  budget: [null, [Validators.required, Validators.min(1)]]
};

解释:

在使用多个验证器时,通过使用内置验证器完成的角度反应式表单验证,该验证器可以在第二个位置的数组中给出。

FIELD_KEY:[INITIAL_VALUE,[LIST_OF_VALIDATORS]]


推荐阅读