Как показать ошибки проверки при отправке формы - PullRequest
0 голосов
/ 19 октября 2019

Я хочу показать ошибки проверки при нажатии кнопки «Отправить». Я пытался использовать функцию markAllAsTouched (), но она не работает. Ошибки сравниваются только после прикосновения к полям

Html:

     <ion-content >
       <div class="ion-text-center tab1-padding">
         <form [formGroup]="newCat" (ngSubmit)="logForm()">
            <mat-form-field appearance="outline" class="tab1-name-field">
              <mat-label>Nome*</mat-label>
            <input matInput #input  formControlName="name">
            <mat-error 
                   *ngIf="newCat.controls['name'].hasError('required')"> 
                    Campo obbligatorio</mat-error>
            </mat-form-field>
           <mat-form-field appearance="outline">
            <mat-label>Data di nascita*</mat-label>
            <input matInput [matDatepicker]="picker" 
              formControlName="birthday" readonly (click)="picker.open()">
               <mat-datepicker-toggle matSuffix [for]="picker"></mat- 
                 datepicker-toggle>
              <mat-datepicker touchUi #picker></mat-datepicker>
             <mat-error                 
            *ngIf="newCat.controls['birthday'].hasError('required')">Campo 
           obbligatorio</mat-error>
         </mat-form-field>

         <button ion-button type="submit" [disabled]="newCat.pristine || 
           newCat.invalid" class="btn btn-success" 
           (click)="validateFields()">Inserisci</button>
         </form>

        </div>
      </ion-content>

Ts:

     constructor(private formBuilder: FormBuilder) {
       this.newCat = this.formBuilder.group({
       name: ['', Validators.required],
       birthday: ['', Validators.required],
     });
     }

      validateFields() {
        this.newCat.markAllAsTouched();
         this.newCat.markAllAsTouched();
       }

1 Ответ

1 голос
/ 19 октября 2019

Попробуйте перебрать все элементы управления и создать отдельные элементы управления, как показано ниже,

validateFields(){
   this.validateAllFormFields(this.newCat);
}

validateAllFormFields(formGroup: FormGroup) {         
  Object.keys(formGroup.controls).forEach(field => {  
    const control = formGroup.get(field);             
    if (control instanceof FormControl) {             
      control.markAsTouched({ onlySelf: true });
    } 
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...