Проверка угловой даты материала не работает при загрузке данных - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть директива, которая проверяет, если дата больше текущей даты, поле ввода недействительно.Он отлично работает, когда я регистрирую запись.Проблема возникает при поиске в реестре для редактирования.Хотя компонент не становится красным, он становится недействительным, поэтому я должен нажать на другую дату и выбрать ту же дату, чтобы он работал.Есть ли тело, которое знает, что происходит?

моя директива

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;
    }
}
...