A diretiva personalizada não funciona em meu projeto, mesmo eu tendo copiado literalmente todos os codigos sem nenhum erro. O template não a reconhece
<div class="formulario__campo">
<label class="campo__etiqueta" for="nascimento">Nascimento</label>
<input
name="nascimento"
id="nascimento"
type="date"
class="campo__escrita"
ngModel
required
atrocidade
#nascimento="ngModel"
/>
<div *ngIf="(nascimento?.invalid && nascimento?.touched) || nascimento?.dirty">
<app-mensagem *ngIf="nascimento?.errors?.['required']" mensagem="A data de nascimento deve ser preenchida."></app-mensagem>
<app-mensagem *ngIf="nascimento?.errors?.['maiorIdadeValidator']" mensagem="O usuário deve ter mais de 18 anos."></app-mensagem>
</div>
</div>
import { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';
import { Directive } from '@angular/core';
@Directive({
selector: '[atrocidade]',
providers: [{
provide: NG_VALIDATORS,
useExisting: MaiorIdadeDirective,
multi: true
}]
})
export class MaiorIdadeDirective implements Validator {
constructor() { }
validate(control: AbstractControl): ValidationErrors | null {
const dataNascimento = control.value;
const anoNascimento = new Date(dataNascimento).getFullYear();
const anoNascMais18 = anoNascimento + 18;
const anoAtual = new Date().getFullYear();
const ehMaior = anoNascMais18 <= anoAtual;
return ehMaior ? null : {'maiorIdadeValidator': true};
}
}