210 votes

Validateur attendu pour retourner Promesse ou Observable

Im essayant de faire une validation personnalisée sur Angulaire 5 mais je suis confronté à l'erreur suivante

Expected validator to return Promise or Observable

Je veux juste retourner une erreur à la forme, si la valeur ne marche pas correspondre au besoin, voilà mon code:

C'est l'élément où est ma forme

  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]
    })     
   }

Ce code est dans le fichier avec la validation je veux mettre en place:

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

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

Quelqu'un peut-il m'aider? Ne que type de validation uniquement travailler avec des observables ou puis-je puis-je, sans être une promesse ou observables? merci

600voto

vimal dhanush Points 1364

Cela signifie que vous devez ajouter plusieurs validateurs dans la gamme

. Exemple:

Avec L'Erreur

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

Ci-dessus, on déclenche une erreur que validateur pour revenir Promesse ou Observables

Correctif:

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

Explication:

Dans angulaire Réactif formulaire de validation à l'aide de construit validateurs qui pourrait donné dans le tableau en 2ème position, lorsque plusieurs validateurs utilisé.

FIELD_KEY: [INITIAL_VALUE, [LIST_OF_VALIDATORS]]

50voto

Ce qui suit devrait fonctionner :

les arguments que le contrôle du formulaire attend sont les suivants :

de https://angular.io/api/forms/FormControl

7voto

user2738695 Points 20

Si vous ajoutez plusieurs validateurs, alors vous devez ajouter un autre troisième support '[]' et à l'intérieur de cela, vous devriez mettre vos validateurs. Comme ci-dessous:

1voto

Kamlesh Points 157

Validators.composer() est redondant;

Vous pouvez simplement passer un tableau. Le problème d'OP est causé par l'omission d'envelopper les validateurs dans [] pour en faire un tableau, d'où le minLength() on est supposé être async et le message d'erreur résultant.

J'espère que cette solution vous aidera. Merci.

1voto

user1934070 Points 51

Erreur: nom de l'utilisateur:[',[Validators.required,Validators.minLength(3)], forbiddenNameValidator(/password/)],

ans: nom de l'utilisateur:[',[Validators.required,Validators.minLength(3),forbiddenNameValidator(/password/)]],

les validateurs n'utilisent qu'un deuxième paramètre dans le tableau intérieur. pas pour le tableau extérieur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X