2016-07-29 13 views
20

Buduję pole wyszukiwania w mojej aplikacji Angular 2, próbuję przesłać wartość po naciśnięciu klawisza "Enter" (formularz nie zawiera przycisku).W Angular 2, jak przesłać wartość typu wejściowego = "tekst" po naciśnięciu klawisza Enter?

Szablon

<input type="text" id="search" class="form-control search-input" name="search" placeholder="Search..." [(ngModel)]="query" (ngSubmit)="this.onSubmit(query)"> 

Z prostym onSubmit funkcji dla celów testowych ...

export class HeaderComponent implements OnInit { 
    constructor() {} 

    onSubmit(value: string): void { 
    alert('Submitted value: ' + value); 
    } 
} 

ngSubmit nie wydają się działać w tej sprawie. Więc jaki jest "Angular 2 way", aby rozwiązać ten problem? (Najlepiej bez hacki jak ukryte guziki)

Odpowiedz

69

(keyup.enter)="methodInsideYourComponent()" dodać ten wewnątrz tagu wejściowego

+0

Nice! Zacząłem działać, pakując go za pomocą '

', ale twoja droga jest znacznie czystsza i zwięzła! –

+0

Schludny. dziękuję – user2180794

+4

Jest to również wspomniane w [Angular Docs] (https://angular.io/docs/ts/latest/guide/user-input.html#!#key-event-filtering-with-key-enter-) . –

1

w normalnym HTML trzeba <button type="submit" ></button> lub <input type="submit" /> przesłać formularz po naciśnięciu Enter. Te elementy mogą być ukryte przez css, ale muszą być obecne w formularzu. ng-submit powinien być powiązany z normalnym zdarzeniem onsubmit i ma takie same warunki, które mają być wyzwalane.

Również z kodu, który napisałeś, nie masz elementu formularza, ale tylko pole wejściowe, a dyrektywa ng-submit działa tylko z formularzami, ponieważ elementy wejściowe nie mają zdarzenia JS onsubmit.

1

można umieścić pola tekstowego wewnątrz tagu formularza i ustawić właściwość ngSubmit na formularzu tj

<form (ngSubmit)="YouMethod()"> 
    <input type="text" class="form-control input-lg" /> 
</form> 
0

Dla kompletności, to rozwiązanie pracował dla mnie, a także:

<form (keydown)="keyDownFunction($event)"><input type="text" /></form> 
Powiązane problemy