Angular: Formular: Seite wird neu geladen, wenn NgForm über NgIf entfernt/wiederhergestellt wird

Erstellt am 1. Feb. 2016  ·  3Kommentare  ·  Quelle: angular/angular

Bizarr, aber unschuldig entstanden.

Es wurde versucht, die (fehlende) Funktion zum Zurücksetzen von Formularen zu implementieren, indem das vorherige Formular aus dem DOM und wieder hineingeschaltet wurde, wobei ein NgIf an ein active Flag angeheftet war

<form *ngIf="active" 
          (ngSubmit)="onSubmit()" #heroForm="ngForm">

gesteuert durch die Methode clear Komponente wie folgt

  clear() {
    this.model = new Hero(42, '', '');
    this.active = false;
    setTimeout(()=> this.active=true, 0);
  }

Wenn das Formular gültig ist (wie zu Beginn), führt das Klicken auf Löschen dazu, dass die Seite neu geladen wird. Ist das Formular ungültig (zB kein Name), wird nicht neu geladen.

Hier ist eine Repro über plunker:
http://plnkr.co/edit/GNhLbONEDHyApCm9vUeh

Hilfreichster Kommentar

Der Clear-Button hat den Typ "Submit". Wenn Sie darauf klicken, wird das Formular also gesendet. NgForm soll das Submit-Ereignis abfangen, aber da NgIf das Formularelement aus dem DOM entfernt, findet das Abfangen nicht statt. Sie können dies beheben, indem Sie den Schaltflächentyp auf "Schaltfläche" setzen.

Alle 3 Kommentare

Der Clear-Button hat den Typ "Submit". Wenn Sie darauf klicken, wird das Formular also gesendet. NgForm soll das Submit-Ereignis abfangen, aber da NgIf das Formularelement aus dem DOM entfernt, findet das Abfangen nicht statt. Sie können dies beheben, indem Sie den Schaltflächentyp auf "Schaltfläche" setzen.

Vielen Dank. Ich wusste nicht, dass ein <button> _ohne Typattribut _ dasselbe ist wie ein
Das behebt das Problem, wie in diesem überarbeiteten Plunker zu sehen ist: http://plnkr.co/edit/u3ltLP84JHn2VkoFKf46?p=preview

Schließen dieses Problems und Öffnen von #6822, das eine explizite reset Funktion erfordert, um den von diesem Plunker veranschaulichten Hack zu ersetzen.

Dieses Problem wurde aufgrund von Inaktivität automatisch gesperrt.
Bitte reichen Sie ein neues Problem ein, wenn Sie auf ein ähnliches oder verwandtes Problem stoßen.

Lesen Sie mehr über unsere Richtlinie zum automatischen Sperren von Konversationen .

_Diese Aktion wurde automatisch von einem Bot ausgeführt._

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen