2017-07-28 1 views
0

J'ai une page angulaire de 4 qui reçoit des entrées de l'utilisateur. J'ai une validation sur les contrôles individuels. Sur soumettre je veux faire des validations de serveur (essentiellement revérifier toutes les validations) et renvoyer toutes les erreurs en tant que tableau avec le nom de champ, vrai ou faux et une erreur si elle a échoué.Angular 4 lie la réponse HTTP au modèle de type tapuscrit

Je voudrais que ces erreurs correspondent aux contrôles sur la page et affichent comme des erreurs. J'utilise des formulaires réactifs et la réponse du serveur utiliserait le même nom que le contrôle de formulaire. Exemple: le nom du contrôle est «nom». Après soumettre je reçois une réponse en arrière ce nom est invalide. Je voudrais montrer et message d'erreur sous le contrôle. Cela ressemble beaucoup à MVC lorsque des erreurs de soumission sont affichées à côté de chaque contrôle.

Est-ce possible et comment procéder pour générer une liaison générique pouvant être utilisée pour tous les formulaires.

+1

Ce serait génial si vous pouviez partager votre code – brijmcq

Répondre

0
Yes, it is quite simple in angular. Here is an example how to do so. 

    1. HTML file. 

    <form [formGroup]="saveForm" (ngSubmit)="saveData()" > 
     <div> 
      <label>Name</label> 
      <input id="name" type="text" class="form-control" formControlName="name" tabindex="1"> 
     </div> 
     <div *ngIf="errror" > 
      <p>{{errorMsg}}</p> 
     </div> 

     <button type="submit" id="btnSave" >Save</button> 
    </form> 

2.In Component ts. 
a. Defined the formgroup & error message variable. 
    saveForm :FormGroup; 
    errror :boolean = false ; 
    errorMsg :any; 
b. Initialize form group. (You can defined client side validation here using angular validator) 
    this.saveForm = this.fb.group({ 
    name: [''] 
    }); 
c. On save data method you need to set the error bit true. 
saveData() { 
    let data = this.saveForm .value.name; 
    this._userService.save(data) // calling service here. 
     .subscribe(
     (response :any)=> { 
      console.log(response); 
      } 
     }, 
     (error :any) => { 
      this.error = true; 
this.errorMsg = error.error; // assigning server side errro to the variable. 
     } 
     ); 

    } 

That's done. 
+0

Merci Kamaal. Cela fonctionnera. J'espérais quelque chose de générique qui pourrait fonctionner avec toutes les formes. Donc, si j'ai un formulaire avec 20 entrées, les erreurs sont automatiquement mappées de l'objet retourné au formulaire. Si un objet existe dans l'objet retourné, il s'agit d'une erreur et le message doit apparaître à côté de la boîte. Y a-t-il un paquet ou quelque chose qui va permettre aux erreurs de validation du serveur d'apparaître sur le formulaire. J'espérais aussi avoir le hook de validation dans la validation angulaire et ne pas avoir à gérer les erreurs moi-même, en utilisant la propriété form.control.valid. – janB