Угловой 7 & Угловой материал - валидатор не показывает ошибку MinLength - PullRequest
0 голосов
/ 29 марта 2019

Я работаю с Angular 7 и Angular Material, и есть небольшая проблема с моим кодом, которую я не могу решить.Следующий фрагмент кода должен вернуть строку с ошибкой моего сообщения, если она есть:

    getPasswordErrorMessage() {
        return this.passwordFormControl.hasError('required') ? 'Password is required' :
              this.passwordFormControl.hasError('minLength') ? 'Password must be at least 6 characters long' : '';
    }

И она должна отображаться между тегами mat-error:

    <mat-form-field>
        <input matInput minlenght="6" type="password" placeholder="Password" [formControl]="passwordFormControl" [errorStateMatcher]="matcher">
        <mat-error *ngIf="passwordFormControl.invalid">
             {{ getPasswordErrorMessage() }}
        </mat-error>
    </mat-form-field>

В любом случаеотображается только ошибка «обязательное поле».Есть ли причина, по которой ошибка minLength не отображается?

1 Ответ

0 голосов
/ 29 марта 2019

Это из-за того, как вы настроили функцию возврата ошибки.Тройка вернет первый матч и не заботится о следующем.

getPasswordErrorMessage() {
   let error = '';
   error = this.passwordFormControl.hasError('required') ? 'Password is required' : '';
   error = this.passwordFormControl.hasError('minLength') && error ? `${error}   * 
  Password must be at least 6 characters long` : this.passwordFormControl.hasError('minLength') ? 'Password must be at least 6 characters long' : ''; 
 return error;
  }

Это должно сработать.

...