Ok, vielleicht ist das unklar. Holen Sie sich dieses Formular:
<form (ngSubmit)="submit()" #crisisForm="ngForm">
<input type="text" name="name" [(ngModel)]="crisis.name">
<button type="submit">Submit</button>
<button type="button" (click)="preview()">Preview</button>
<button type="reset" (click)="reset()">Reset</button>
</form>
Warum lösen alle Tasten die submit()
Funktion aus? Und wie kann man das vermeiden?
Antworten:
Ich sehe zwei Möglichkeiten, um es zu lösen:
1) Geben Sie type = "button" explizit an (ich denke, es ist vorzuziehen ):
Gemäß W3-Spezifikation:
2) Verwenden Sie
$event.preventDefault()
:oder
quelle
(click)="preview(); false"
sollte das gleiche tun. Zum BeispielstopPropagation()
müsste explizit aufgerufen werden, aber wenn ein Ereignishandler zurückkehrtfalse
,preventDefault
wird er für das Ereignis aufgerufen.return false
und es hat nicht funktioniert :)return
ist in verbindlichen Ausdrücken wahrscheinlich nicht zulässig, aber der Wert des letzten Ausdrucks wird implizit zurückgegeben.type=button
W3C-Spezifikation. Danke dir!!Dieser Plunker schlägt etwas anderes vor, jeder Knopf scheint wie beabsichtigt zu funktionieren.
Um jedoch das Standardverhalten des Formulars zu verhindern, können Sie dies tun:
TS:
Vorlage:
quelle
Ich habe festgestellt, dass mit der Version 2.0
(ngSubmit)
einnull
Ereigniswert an die Methode übergeben wird. Stattdessen sollten Sie uns dies tun(submit)
Ihre .ts-Datei
quelle
Setzen Sie type = "button" in die Schaltfläche, die Sie nicht ausführen möchten.
quelle
Ich habe das gleiche Problem. Die Arbeit, die ich gefunden habe, war das Ersetzen
button
durcha
und Anwenden des Schaltflächenstils auf das Ankerelement:quelle
Sie müssen FormsModule aus '@ angle / forms' in Ihre app.module.ts importieren
quelle