Angular => hasError не отображает ошибку с полем mat-form с полем выбора mat - PullRequest
1 голос
/ 12 апреля 2020

У меня проблема с hasError в mat-form-field. Вот мой код

   <mat-form-field class="mat-form-field-design">
  <mat-label>{{
    'SETTINGS.NOTIFICATION.DAYS_SEND_LABEL' | translate
    }}</mat-label>
  <mat-select formControlName="daysSend" multiple required>
    <mat-option *ngFor="let currentDays of days" [value]="currentDays">
      {{'COMMON.DAYS.' + currentDays | translate}}
    </mat-option>
  </mat-select>
  <mat-error  *ngIf="hasError(form?.get('hourSend'), 'hoursSend', 'required')">
    {{ 'COMMON.ERRORS.DAYS_REQUIRED' | translate }}
  </mat-error>
</mat-form-field>

С этими кодами сообщение под полем не отображается, но с этими кодами оно работает

<mat-form-field class="mat-form-field-design">
  <mat-label>{{
    'SETTINGS.NOTIFICATION.DAYS_SEND_LABEL' | translate
    }}</mat-label>
  <mat-select formControlName="daysSend" multiple required>
    <mat-option *ngFor="let currentDays of days" [value]="currentDays">
      {{'COMMON.DAYS.' + currentDays | translate}}
    </mat-option>
  </mat-select>
  <mat-error  *ngIf="form.get('daysSend').errors && form.get('daysSend').touched">
    {{ 'COMMON.ERRORS.DAYS_REQUIRED' | translate }}
  </mat-error>
</mat-form-field>

Если у кого-то была такая же проблема и она была исправлена , скажи мне свое решение. Вот мой метод hasError, который просто вызывает собственный метод hasError.

public hasError(form: AbstractControl, fc: string, validator: string) {
if (!form || !fc || !validator || !form.get(fc)) {
  return false;
}
return form.get(fc).hasError(validator);

}

(я указываю с mat-form-field без mat-select все отлично работает) example =>

mat-form-field class="art-form-field-full-width">
        <mat-label>{{'SETTINGS.MAIN.APPEARANCE.DASHBOARD_QUOTE_LABEL' | translate}}</mat-label>
        <input matInput
               [id]="'appearance-dashboard-band-quote' + lang.value"
               [placeholder]="'SETTINGS.MAIN.APPEARANCE.DASHBOARD_QUOTE_PLACEHOLDER' | translate"
               formControlName="dashboardBandQuote"
               required/>
        <mat-error *ngIf="hasError(form?.get(lang.value), 'dashboardBandQuote', 'required')">{{
          'COMMON.ERRORS.REQUIRED' | translate
          }}</mat-error>
      </mat-form-field>

Спасибо!

1 Ответ

0 голосов
/ 12 апреля 2020

Вместо:

<mat-error  *ngIf="hasError(form?.get('hourSend'), 'hoursSend', 'required')">
  {{ 'COMMON.ERRORS.DAYS_REQUIRED' | translate }}
</mat-error>

Разве вы не должны использовать следующее (обратите внимание на 1-й параметр hasError)?

<mat-error  *ngIf="hasError(form, 'hoursSend', 'required')">
  {{ 'COMMON.ERRORS.DAYS_REQUIRED' | translate }}
</mat-error>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...