1. ホーム
  2. javascript

[解決済み] PromiseまたはObservableを返すことを期待するバリデータ

2022-04-24 02:01:06

質問

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;
}

そのような検証はobservableでしかできないのでしょうか?それともプロミスやobservableでなくてもできるのでしょうか?

どのように解決するのですか?

ということです。 複数のバリデータを配列で追加する

. 例

エラーあり

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

上記のものは、次のようなエラーを投げます。 バリデータはプロミスかオブザーバブルを返すべきものです。

修正しました。

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

説明する。

Angular Reactiveのフォームバリデーションは、2つ目の場所にある配列で指定された内蔵のバリデーターを使用して行われます。 複数のバリデーターを使用 .

field_key: [initial_value, [list_of_validators]].