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 ?