Respuestas:
tal vez agregue keypress
o keydown
a los campos de entrada y asigne el evento a la función que hará el envío cuando se haga clic en ingresar
tu plantilla se vería así
<form (keydown)="keyDownFunction($event)">
<input type="text" />
</form
Y tu función dentro de tu clase se vería así
keyDownFunction(event) {
if (event.keyCode === 13) {
alert('you just pressed the enter key');
// rest of your code
}
}
También puede agregar (keyup.enter)="xxxx()"
Editar:
<form (submit)="submit()" >
<input />
<button type="submit" style="display:none">hidden submit</button>
</form>
Para utilizar este método, debe tener un botón de envío incluso si no se muestra "Gracias por la respuesta del kit de herramientas ".
Respuesta anterior:
Sí, exactamente como lo escribió, excepto que el nombre del evento es en (submit)
lugar de (ngSubmit)
:
<form [ngFormModel]="xxx" (submit)="xxxx()">
<input [(ngModel)]="lxxR" ngControl="xxxxx"/>
</form>
Prefiero (keydown.enter)="mySubmit()"
porque no se agregará un salto de línea si el cursor está en algún lugar dentro de un <textarea>
pero no al final.
De esta manera es mucho más simple ...
<form [formGroup]="form" (keyup.enter)="yourMethod(form.value)">
</form>
Utilice siempre keydown.enter en lugar de keyup.enter para evitar retrasos.
<textarea [(ngModel)]="textValue" (keydown.enter)="sendMessage();false" ></textarea>
y función dentro de component.ts
textValue : string = '';
sendMessage() {
console.log(this.textValue);
this.textValue = '';
}
agregue esto dentro de su etiqueta de entrada
<input type="text" (keyup.enter)="yourMethod()" />
(keyup.enter)="methodname()"
esto debería funcionar y ya se mencionó en muchas respuestas, sin embargo, debería estar presente en la etiqueta del formulario y no en el botón.
agregar un botón de envío invisible hace el truco
<input type="submit" style="display: none;">
Simplemente agregue (keyup.enter)="yourFunction()"
Espero que esto pueda ayudar a alguien: por alguna razón no pude rastrear debido a la falta de tiempo, si tiene un formulario como:
<form (ngSubmit)="doSubmit($event)">
<button (click)="clearForm()">Clear</button>
<button type="submit">Submit</button>
</form>
cuando presiona el Enter
botón, clearForm
se llama a la función, aunque el comportamiento esperado era llamar a la doSubmit
función. Cambiar el Clear
botón a una <a>
etiqueta me solucionó el problema. Todavía me gustaría saber si eso se espera o no. Me parece confuso
Si desea incluir ambos más simples de lo que vi aquí, puede hacerlo simplemente incluyendo su botón dentro del formulario.
Ejemplo con una función que envía un mensaje:
<form>
<mat-form-field> <!-- In my case I'm using material design -->
<input matInput #message maxlength="256" placeholder="Message">
</mat-form-field>
<button (click)="addMessage(message.value)">Send message
</button>
</form>
Puede elegir entre hacer clic en el botón o presionar la tecla Intro.
Si desea incluir ambos, acepte al ingresar y acepte al hacer clic y luego haga -
<div class="form-group">
<input class="form-control" type="text"
name="search" placeholder="Enter Search Text"
[(ngModel)]="filterdata"
(keyup.enter)="searchByText(filterdata)">
<button type="submit"
(click)="searchByText(filterdata)" >
</div>