2
respostas

Dúvida ao criar validador customizado

Professor, fazendo uma adaptação no exemplo criei um validador customizado para verificar se um campo coincide com outro, para usar, por exemplo, numa página de trocar senha o usuário deve digitar uma nova senha e depois redigitar em outro campo a mesma senha.

Fiz o seguinte validador:

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

export function sameValidator(field1: string, field2: string): ValidatorFn {
   return (control: AbstractControl): { [key: string]: boolean | null } => {
      if (control.get(field1) !== control.get(field2)) {
         return { same: true };
      }
      return null;
   };
}

No controller está assim:

ngOnInit() {
      this.newPasswordForm = this.formBuilder.group({
         username: ['', Validators.required],
         passwordAtual: ['', Validators.required],
         passwordNovo: ['', Validators.required],
         passwordConfirmacao: [
            '',
            [Validators.required, sameValidator('passwordNovo', 'passwordConfirmacao')]
         ]
      });
   }

Porém o validador não funciona.

2 respostas

Fala Marcos, tudo bom?

Dando um console.log em if (control.get(field1) !== control.get(field2)) { você consegue ver o conteúdo desses campos?

Retorna null