web-dev-qa-db-fra.com

Réinitialisation du formulaire et définition de la valeur par défaut Angular 2

Je travaille sur une simple application Angular 2 et j'ai du mal à réinitialiser un ngForm mais en conservant une valeur par défaut:

Le comportement attendu est lorsque vous cliquez sur "Réinitialiser", la zone de saisie sera réinitialisée à sa valeur par défaut ("Par défaut" dans ce cas) ainsi que toutes les classes spécifiques angular retournant à la valeur par défaut ( c'est-à-dire ng intacte, ng vierge, etc.)

Ce que je vois, c'est que la valeur par défaut est également effacée, même lorsque je la définis explicitement après la réinitialisation du formulaire

Extrait de code ci-dessous:

HTML:

<form (ngSubmit)="onTrainSearchClick()" novalidate #trainForm="ngForm">
  <input type="text" [(ngModel)]="id" name="someId"/>
  <button type="button" (click)="reset(trainForm)">Reset</button>
  <button type="submit">Search</button>
</form>

TypeScript (omis les importations et @Component):

export class TrainSearchTestComponent implements OnInit {

  id: string = 'DEFUALT';

  constructor() { }
  ngOnInit() { }
  onTrainSearchClick(){ }

  reset(form: NgForm){
    form.resetForm();
    this.id = 'DEFUALT';
  }
}
12
Tony Scialo

Utilisation form.reset:

form.reset({ id: this.id });

Réponse originale (valable pour angulaire @ 2)

Vous pouvez passer une valeur à resetForm qui sera utilisée comme valeur par défaut pour le formulaire:

form.resetForm({ id: this.id });

(bien sûr, si votre formulaire est un FormGroup et qu'il a un contrôle avec le nom id qui devrait avoir une valeur par défaut)

25
smnbbrv