Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 8 - form validation is not working properly

<mat-form-field class="input-label-add">
  <input matInput placeholder="Registration **" formControlName="registration">
  <mat-error *ngIf="addLockerForm.get('registration').hasError('maxlength')">registration cannot exceed 8 characters</mat-error>
  <mat-error *ngIf="addLockerForm.get('registration').errors">registration or surname is required</mat-error>
</mat-form-field> 
this.addLockerForm =  this.formBuilder.group({
    locker_serial_number: [null, Validators.required],
    customer_surname: [null],
    registration: [null, Validators.maxLength(10)],
    mobile: [null],
    email: [null],
    date_in: [null, Validators.required],
    date_out: [null, Validators.required], 
  },
  { validator: [this.validateCustomerDetails, this.validateCustomerContact] });

addLockerForm.get('registration').hasError('maxlength') stays false all the time

like image 249
Ivilin Stoyanov Avatar asked Oct 13 '25 02:10

Ivilin Stoyanov


1 Answers

Could you try this ?

addLockerForm.get('registration').errors.maxlength

https://angular.io/guide/form-validation#validator-functions

EDIT 1

You don't need to use .errors.

Please update your code like this :

<mat-form-field class="input-label-add">
  <input matInput placeholder="Registration **" formControlName="registration">
  <mat-error *ngIf="addLockerForm.get('registration').hasError('maxlength')">registration cannot exceed 8 characters</mat-error>
  <mat-error *ngIf="addLockerForm.get('registration').hasError('required')">registration or surname is required</mat-error>
</mat-form-field> 
registration: [null, [Validators.required, Validators.maxLength(8)]], 
like image 153
Emilien Avatar answered Oct 14 '25 17:10

Emilien