1
resposta

[Sugestão] Capturar erro de validação antes de fazer a requisição

Olá, tudo bem? Queria compartilhar algo que percebi. Vi que se digitar um cep com menos dígitos, mesmo nosso validador apontando o erro de cep inválido, ao ativar o evento blur a requisição na API é feita da mesma forma, gerando um erro 400 no retorno. É indiferente para o funcionamento, mas essa requisição poderia ser evitada. No método consultaCep, ao invés de usar o evento ($event) para pegar o valor do cep e fazer o if apenas validando se o cep está vazio, da pra utilizar o form que já estamos recebendo e verificar se existem erros no campo cep, e se houver, não executar uma nova requisição.

O meu método ficou assim:

consultaCep(f: NgForm) {
    const cep = f.form.get('cep')
    if (!cep?.errors) {
      this.service.getConsultaCep(cep?.value).subscribe((resultado) => {
        console.log(resultado)
        this.populandoEndereco(f, resultado)
      })
    }
  }

Gostaria de saber se há uma forma melhor de fazer isso, ou se to fazendo certo. Está funcionando né, mas vai saber. Adorei o curso, muito obrigado!

1 resposta

Oi Rodrigo, tudo bem?

Ficamos felizes em saber que você adorou o curso! Muito obrigada pelo seu feedback :D

Muito boa a sua observação e agradeço por compartilhar sua solução conosco. Está corretíssimo! Realmente, se o formulário estiver inválido, não faz sentido fazer a requisição.

Sua solução é uma ótima maneira de resolver essa situação. Você está utilizando a propriedade errors do campo cep do formulário para verificar se há algum erro de validação. Se não houver, a requisição é feita.

E sua solução é mais específica e só verifica o campo cep, o que é uma ótima prática, especialmente se o formulário tiver muitos campos e você só quiser evitar a requisição se o cep estiver inválido.

Parabéns pela iniciativa e pelo raciocínio!

Um abraço e bons estudos.