Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

logica da diretiva

não reduziria o codigo se apenas subtraíssemos o ano atual pelo ano de nascimento e verificar se o resultado >= 18 ?

validate(control: AbstractControl): ValidationErrors | null {
    const dataNascimento = control.value;
    const anoNascimento = new Date(dataNascimento).getFullYear();
    const anoAtual = new Date().getFullYear();

    return anoAtual - anoNascimento >= 18 ? null : { 'maiorIdadeValidator': true };
}  

e mesmo assim ficaria uma brexa no codigo por conta do mes de nascimento, a pessoa poderia estar no ano de atingir a maioridade porém o mes ainda não chegou, nesse caso como poderiamos melhorar ainda mais essa directive ?

2 respostas
solução!

Olá, Henrique, como vai?

Sim, a sua proposta de simplificar o código usando apenas a subtração de anos é válida. Essa abordagem é mais enxuta e atende ao requisito principal de verificar se o usuário tem pelo menos 18 anos no ano corrente. Entretanto, como você mencionou, essa abordagem não considera o mês e o dia de nascimento, o que pode levar a um erro de validação em alguns casos. Para resolver isso com precisão, seria necessário validar a data completa (dia, mês e ano), mas isso exigiria mudanças na estrutura do formulário, como incluir um campo de data completo ou pedir mês e dia separadamente ou pelo menos um campo perguntando se o usuário já fez aniversário no ano corrente.

Espero ter ajudado!

Siga firme nos seus estudos e conte com o fórum sempre que precisar.

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

opa Mike, beleza cara! vou me atentar a esses detalhes, cada dia aprendendo um pouco mais.

Obrigado pela atenção, sucesso.