У меня есть директива, которая проверяет, если дата больше текущей даты, поле ввода недействительно.Он отлично работает, когда я регистрирую запись.Проблема возникает при поиске в реестре для редактирования.Хотя компонент не становится красным, он становится недействительным, поэтому я должен нажать на другую дату и выбрать ту же дату, чтобы он работал.Есть ли тело, которое знает, что происходит?
моя директива
validate(control: AbstractControl): ValidationErrors | null {
if ((control.value !== undefined) && (control.value !== null)) {
const dataInicio: Date = new Date(this.datainicio);
const dataFim: Date = new Date(this.datafim);
let parts: any[];
let data;
if (this.el.nativeElement.type === 'text') {
parts = control.value.split('/');
data = new Date(parts[2], (parts[1] - 1), parts[0]);
} else {
parts = control.value.split('-');
data = new Date(parts[0], (parts[1] - 1), parts[2]);
}
if (data) {
if ((data > dataFim) || ((data) < dataInicio)) {
return {'spdValidaData': true};
}
} else {
return {'spdValidaData': true};
}
}
return null;
}
мой HTML
<mat-form-field appearance="outline" class="p-campo-input" fxFlex="50"
matTooltip="Este campo deve conter a data de registro"
matTooltipClass="p-mat-tooltip-form-field">
<mat-label>Data de Registro</mat-label>
<input type="date" name="dataRegistro" class="p-campo-data" [ngModel] [value]
(input)="fornecedor.pessoa.pessoaJuridica.dataRegistro = this.conversorDataService.converteISO($event.target.value)"
spdValidaData [spdConverteData]="fornecedor.pessoa.pessoaJuridica.dataRegistro" id="data_registro"
datafim={{dataFinal}} datainicio={{dataInicial}} [textMask]='{mask : mascaraData}' required
placeholder="Digite a data de registro" autocomplete="off" [disabled]="semPermissaoAlterar()" matInput>
<mat-error>Data de registro inválida</mat-error>
</mat-form-field>
и в моем контроллере у меня есть это
ngOnInit() {
.....
this.dataFinal = new Date().toISOString();
const data = new Date();
data.setFullYear(data.getFullYear() - 130);
this.dataInicial = data.toISOString();
data.setFullYear(data.getFullYear() + 330);
this.dataFutura = data.toISOString();
if (!(this.conversorDataService.suportaData(document))) {
this.mascaraData = this.mascaraConstants.data;
}
}