Ok jadi mungkin ini tidak jelas. Dapatkan formulir ini:
<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>
Mengapa semua tombol memicu submit()
fungsi tersebut? Dan bagaimana cara menghindarinya?
Jawaban:
Saya melihat dua opsi untuk menyelesaikannya:
1) Tentukan type = "button" secara eksplisit (menurut saya ini lebih disukai ):
Menurut spesifikasi W3:
2) Gunakan
$event.preventDefault()
:atau
sumber
(click)="preview(); false"
harus melakukan hal yang sama. MisalnyastopPropagation()
perlu dipanggil secara eksplisit, tetapi jika penangan peristiwa kembalifalse
, makapreventDefault
akan dipanggil pada acara tersebut.return false
dan tidak berhasil :)return
mungkin tidak diperbolehkan dalam ekspresi yang mengikat tetapi nilai ekspresi terakhir dikembalikan secara implisit.type=button
spesifikasi W3C. Terima kasih!!Plunker ini menyarankan sebaliknya, setiap tombol tampaknya berfungsi sebagaimana mestinya.
Namun, untuk mencegah perilaku default formulir Anda bisa melakukan ini,
TS:
Template:
sumber
Saya menemukan bahwa dengan rilis 2.0
(ngSubmit)
melewatinull
nilai acara ke metode, jadi Anda harus kami(submit)
file .ts Anda
sumber
Tetapkan type = "button" di tombol yang tidak ingin Anda jalankan.
sumber
Saya memiliki masalah yang sama. Pekerjaan yang saya temukan adalah mengganti
button
dengana
dan menerapkan gaya tombol ke elemen jangkar:sumber
Anda harus mengimpor FormsModule dari '@ angular / forms' di app.module.ts Anda
sumber