J'ai un formulaire de test avec une simple validation. Ma validation fonctionne parfaitement à l'heure de la soumission.Comment réinitialiser la validation après l'envoi d'un formulaire dans Angular 2
HTML
<section>
<form (ngSubmit)="savePerson()" #personForm="ngForm">
<div>
<label for="name">Name: </label>
<input type="text" name="name" [(ngModel)]="person.name" required #name="ngModel" >
<div [hidden]="name.valid || name.pristine" class="error">
Name is required.
</div>
</div>
<div>
<label for="weight">Weight: </label>
<input type="number" name="weight" [(ngModel)]="person.weight" min="20" #weight="ngModel">
</div>
<div *ngIf="weight.errors && (weight.dirty || weight.touched)" class="error">
<p [hidden]="!weight.errors.min">
Weight must be higher than a feather's. {{weight.value}} is way too low.
</p>
<p [hidden]="!weight.errors.max">
Weight can't be higher than a Rancor's. {{weight.value}} is too high
</p>
</div>
<div>
<label for="height">Height: </label>
<input type="number" name="height" [(ngModel)]="person.height">
</div>
<div>
<label for="profession">Profession: </label>
<select name="proffesion" [(ngModel)]="person.proffesion" #proffesion="ngModel" min=1>
<option [ngValue]="0">Select Proffession</option>
<option *ngFor="let p of allproffesion" [value]="p.id">{{p.title}}</option>
</select>
</div>
<div>
<p>{{message}}</p>
<button type="submit" [disabled]="!personForm.form.valid">Save</button>
</div>
</form>
</section>
<button (click)="gotoPeoplesList()">Back to peoples list</button>
TS
export class AddPersonComponent {
person : Person = { id : 0, height : 0, weight : 0, name : "", proffesion : 0};
message : String = "";
allproffesion : Proffesion [];
constructor(private route: ActivatedRoute, private router: Router, private peopleService:PeopleService){
this.getAllProffession();
}
getAllProffession(){
this.peopleService.getAllProffession().subscribe(i=>this.allproffesion = i);
}
gotoPeoplesList(){
let link = ['/'];
this.router.navigate(link);
}
savePerson(){
this.peopleService.addPerson(this.person).subscribe(i=>{ this.reset(i)});
}
reset(person1 : Person){
if(person1.id != 0){
console.log(this.person);
this.message = "Person Added Successfully.!";
this.person = { id : 0, height : 0, weight : 0, name : "", proffesion : 0};
}
else{
this.message = "Something Went Wrong";
}
}
Mon problème est après avoir soumis le formulaire, Je veux réinitialiser la validation. Je ne veux pas réinitialiser le formulaire bien que. Comme je veux montrer le message pour l'insertion réussie.
Je dois changer la structure de mon code pour faire fonctionner le groupe de formulaire. Formgroup est une meilleure approche que l'approche que j'ai choisie? –
Je ne pense pas que vous auriez à changer votre approche, vous pouvez continuer à utiliser un formulaire de template et appeler 'personForm.reset()' –