我有一条指令来验证日期是否大于当前日期,输入字段是否无效。当我注册记录时,它工作正常。 当我搜索注册表进行编辑时,会出现问题。尽管该组件没有变红,但它变得无效,因此我必须单击另一个日期并选择相同的日期才能正常工作。 有没有人知道什么在打h?
我的求爱
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;
}
}