Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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