The simplest solution to prevent the form submission is to return false on submit event handler defined using the onsubmit property in the HTML <form> element.
onsubmit = function () { if (allowSubmit) allowSubmit = false; else return false; } })(); (well, as sure-fire as you can get with JS enabled anyway). You could disabled the button as a visual confirmation to the end user that the form can only be submit once too. Very correct.
You can tie a submit button to a form that the button doesn't live inside of. The trick is to give the form an id and then reference that id with the button's form property. With this setup, clicking the Submit button will cause the form to be submitted.
I see two options to solve it:
1) Specify type="button" explicitly (i think it's more preferable):
<button type="button" (click)="preview();">Preview</button>
According to W3 specification:
A button element with no type attribute specified represents the same thing as a button element with its type attribute set to "submit".
2) Use $event.preventDefault()
:
<button (click)="preview(); $event.preventDefault()">Preview</button>
or
<button (click)="preview($event);">Preview</button>
preview(e){
e.preventDefault();
console.log('preview')
}
This Plunker suggests otherwise, every button seem to work as intended.
However, to prevent default behaviour of the form you can do this,
TS:
submit(e){
e.preventDefault();
}
Template:
<form (submit)="submit($event)" #crisisForm="ngForm">
You have to import FormsModule from '@angular/forms' in your app.module.ts
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [
FormsModule
],
})
I found that with 2.0 release (ngSubmit)
is passing a null
event value to the method so instead you should us (submit)
<form (submit)="submit($event)" #crisisForm="ngForm">
your .ts file
submit($event){
/* form code */
$event.preventDefault();
}
Set type="button" in the button that you don't want to execute submit.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With