Ok, 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 submit()función? ¿Y cómo evitarlo?

Respuestas:
Veo dos opciones para solucionarlo:
1) Especifique type = "button" explícitamente (creo que es más preferible ):
Según la especificación W3:
2) Uso
$event.preventDefault():o
fuente
(click)="preview(); false"debería hacer lo mismo. Por ejemplo,stopPropagation()sería necesario llamarlo explícitamente, pero si un controlador de eventos regresafalse, entoncespreventDefaultse llama en el evento.return falsey no funcionó :)returnProbablemente no esté permitido en expresiones vinculantes, pero el valor de la última expresión se devuelve implícitamente.type=buttonlas especificaciones del W3C. ¡¡Gracias!!Este Plunker sugiere lo contrario, todos los botones parecen funcionar según lo previsto.
Sin embargo, para evitar el comportamiento predeterminado del formulario, puede hacer esto,
TS:
Modelo:
fuente
Descubrí que con la versión 2.0
(ngSubmit)se pasa unnullvalor de evento al método, por lo que debería(submit)su archivo .ts
fuente
Establezca type = "button" en el botón que no desea ejecutar enviar.
fuente
Tengo el mismo problema. El trabajo en torno a lo que encontré fue la sustitución
buttonconay aplicar estilo de botón de elemento de anclaje:fuente
Tienes que importar FormsModule desde '@ angular / forms' en tu app.module.ts
fuente