2016-06-01 25 views

risposta

35

forse si aggiunge keypress o keydown ai campi di input e assegnare l'evento alla funzione che eseguirà l'invio quando si fa clic su INVIO

il proprio modello sarebbe simile a questo

<form (keydown)="keyDownFunction($event)"> 
    <input type="text" /> 
</form 

E si lavora all'interno della vostra classe sarebbe simile a questa

keyDownFunction(event) { 
    if(event.keyCode == 13) { 
    alert('you just clicked enter'); 
    // rest of your code 
    } 
} 
+7

La risposta da Abdulrahman è il modo migliore – lmaooooo

+1

Questa soluzione crea lavoro; usa Abdulrahman uno invece – user3887964

+0

Grazie, buona risposta –

45

Edit:

<form (submit)="submit()" > 
    <input /> 
    <button type="submit" style="display:none">hidden submit</button> 
    </form> 

Per poter utilizzare questo metodo, è necessario disporre di un pulsante di invio, anche se non viene visualizzato "Grazie per Toolkit's answer"

live example

Old Risposta:

Sì, esattamente come hai scritto, tranne il nome dell'evento è (submit) invece di (ngSubmit):

<form [ngFormModel]="xxx" (submit)="xxxx()"> 
    <input [(ngModel)]="lxxR" ngControl="xxxxx"/> 
</form> 

+0

puoi fornire un plunker? perché non funziona – Toolkit

73

È inoltre possibile aggiungere (keyup.enter)="xxxx()"

+0

Questo funziona benissimo se hai solo una semplice funzione vecchia che vorresti chiamare al posto di un gestore di invio – ScottRFrost

+1

Questo approccio è stato citato su documenti Angular. https://angular.io/docs/ts/latest/guide/user-input.html#!#key-event-filtering-with-key-enter- – trungk18

+0

Il più corretto anwser ... – redaxmedia

4

In questo modo è molto semplice ...

<form [formGroup]="form" (keyup.enter)="yourMethod(form.value)"> 

</form> 
+2

Grazie, è più facile quando mi aspettavo. Risolto in questo modo:

+1

molto più semplice in questo modo piuttosto che inviare una funzione con $ event. Grazie! – Helen

4

l'aggiunta di un pulsante invisibile presentare fa il trucco

<input type="submit" style="display: none;">

16

preferisco (keydown.enter)="mySubmit()" perché non ci sarà aggiunto un ritorno a capo se il cursore era da qualche parte all'interno di un <textarea> ma non al suo termine.

+0

Questo è esattamente quello che stavo cercando! Grazie ! –

+1

dovrebbe essere contrassegnato come risposta :) – Deunz

+0

Semplicemente fantastico;) Non ho bisogno di un'altra funzione per questo – Verri

1

Speriamo che questo possa aiutare qualcuno: per qualche motivo non ho potuto rintracciare a causa della mancanza di tempo, se si dispone di una forma come:

<form (ngSubmit)="doSubmit($event)"> 
    <button (click)="clearForm()">Clear</button> 
    <button type="submit">Submit</button> 
</form> 

quando si preme il pulsante di Enter, la funzione viene chiamata clearForm , anche se il comportamento previsto era chiamare la funzione doSubmit. La modifica del pulsante Clear su un tag <a> ha risolto il problema per me. Vorrei ancora sapere se è previsto o meno.Sembra confuso per me

+5

inorder per evitare ciò, hai specificato type = "button" per il pulsante Clear –

3

Basta semplicemente aggiungere (keyup.enter)="yourFunction()"

+0

Proprio quello che stavo cercando, grazie! –