2015-12-08 15 views
33

Kann man herausfinden, welche Taste bei Verwendung von (Tastendruck) in Angular 2 gedrückt wurde?Welche Taste wurde gedrückt von (Tastendruck) angular2

z.

<input type=text (keypress)=eventHandler()/> 

public eventHandler() { 
    //Some code 
    console.log(keyPressed); 
} 

Bearbeiten: Scheint meine Namenskonventionen waren ein bisschen aus. Ich meinte nicht AngularJS 2, ich meinte Angular 2.0 mit Typoskript.

+0

sind Sie AngularJS mit? – azad

Antwort

67

Übergeben Sie $event an Ihren Event-Handler. Die $event ist eine DOM KeyboardEvent.

<input type=text (keypress)="eventHandler($event)"> 

eventHandler(event) { 
    console.log(event, event.keyCode, event.keyIdentifier); 
} 

Wenn Sie wissen, welche Eigenschaft Keyboard Sie möchten, können Sie das in den Ereignishandler übergeben:

<input type=text (keypress)="eventHandler($event.keyCode)"> 

eventHandler(keyCode) {...} 
+8

Dies erkennt nicht alle Ereignisse. zum Beispiel nicht Pfeiltasten oder Escape. aber Sie können (Keydown) verwenden, um alle von ihnen zu bekommen. –

+2

event.key scheint jetzt der zu verwendende zu sein, es gibt eine Zeichenkette wie '0', 'a', 'ArrowLeft', etc. Die Verwendung von event.keyCode wird abgeraten. – bob

+0

Funktion AvoidSpace (Ereignis: any) { var k = Ereignis? event.which: window.event.keyCode; if (k == 32) gibt false zurück; } Oben ist der Code, den ich verwendet habe, um zu verhindern, dass Benutzer Leerzeichen in Eingabefeld eingeben. Ich implementiere das in angular2. Ich erhalte einen Fehler über den Schlüsselcode und sage "Property 'keycode' existiert nicht für den Typ 'Event'. any". Was soll ich machen? –

12
@Component({ 
    selector: 'key-up3', 
    template: ` 
    <input #box (keyup.enter)="onEnter(box.value)"> 
    <p>{{value}}</p> 
    ` 
}) 
export class KeyUpComponent_v3 { 
    value = ''; 
    onEnter(value: string) { this.value = value; } 
} 

Oder so verwenden ..

<input #box (keyup.enter)="onSubmit(form.value)"> 
<form [formGroup]="form" (ngSubmit)="onSubmit(form.value)"> 
+1

Schöne Lösung. Keine Notwendigkeit, Schlüsselcodes usw. in der Komponente zu überprüfen. – perry

2

Basierend auf der Kommentar zur Antwort:

Dies erkennt nicht alle Ereignisse. zum Beispiel nicht Pfeiltasten oder Escape. aber Sie können (Keydown) verwenden, um alle von ihnen zu bekommen.

Die beste Lösung sowohl alle Ereignisse Backspace zu erhalten und löschen oder was auch immer Schlüssel, benutzen Sie einfach (Eingang)

<input type=text (input)="eventHandler($event.keyCode)"> 

eventHandler(keyCode) {...} 
Verwandte Themen