validar validacion vacios formularios formulario enviar ejemplos ejemplo con campos antes javascript forms angular submit

javascript - validacion - Evite que Angular2 envíe sistemáticamente el formulario al hacer clic en el botón



validar formulario javascript onclick (6)

Ok, entonces tal vez esto no está claro. Obtenga este formulario:

<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>

¿Por qué todos los botones activan la función submit() ? ¿Y cómo evitar eso?


Debe importar FormsModule desde ''@ angular / forms'' en su app.module.ts

import { FormsModule } from ''@angular/forms''; @NgModule({ imports: [ FormsModule ], })


Descubrí que con la versión 2.0 (ngSubmit) se pasa un null evento null al método, por lo que en su lugar, debería enviarnos (submit)

<form (submit)="submit($event)" #crisisForm="ngForm">

su archivo .ts

submit($event){ /* form code */ $event.preventDefault(); }


Establezca type = "button" en el botón que no desea ejecutar enviar.


Tengo el mismo problema El trabajo que encontré fue el button reemplazar con a y aplicar el estilo del botón al elemento de anclaje:

<form (ngSubmit)="submit()" #crisisForm="ngForm"> <input type="text" name="name" [(ngModel)]="crisis.name"> <button type="submit">Submit</button> <a class="btn" (click)="preview()">Preview</a> <a class="btn" (click)="reset()">Reset</a> </form>


Veo dos opciones para resolverlo:

1) Especifique type = "button" explícitamente (creo que es más preferible ):

<button type="button" (click)="preview();">Preview</button>

De acuerdo con la especificación W3:

2) Use $event.preventDefault() :

<button (click)="preview(); $event.preventDefault()">Preview</button>

o

<button (click)="preview($event);">Preview</button> preview(e){ e.preventDefault(); console.log(''preview'') }


Este Plunker sugiere lo contrario, cada botón parece funcionar según lo previsto.

Sin embargo, para evitar el comportamiento predeterminado del formulario, puede hacer esto,

TS:

submit(e){ e.preventDefault(); }

Modelo:

<form (submit)="submit($event)" #crisisForm="ngForm">