2017-08-17 24 views
3

In Angular kann ich schreiben <input (keyup.enter)"onEnter($event)"> zu erkennen, wenn Benutzer die Eingabetaste drücken.Ereignisbindung für bestimmte Tastendruckereignis

Das gleiche ich mit anderen Tasten tun können esc, space, shift usw.

Aber wie kann man erkennen, wenn Benutzer drücken shift + up?

Gibt es eine Liste mit unterstützten Tastenkombinationen? (I could'n jeder in offiziellen docs)

Antwort

4

Nach einigen Recherchen fand ich nette Art und Weise, es zu tun:

<!-- Listen to Shift + Up --> 
<input (keyup.shift.arrowup)="..."> 

<!-- Listen to Ctrl + Shift + Down --> 
<input (keyup.control.shift.arrowdown)="..."> 

<!-- Listen to Esc within window --> 
<div (window:keyup.esc)="..."> 
2

Sie (keyup) verwenden können, und überprüfen Sie die event für die Taste gedrückt wurde, und für shiftKey:

HTML

<input type="text" (keyup)="myFunc($event)"/> 

Funktion innen Komponente

private myFunc(event: KeyboardEvent): void { 
    if (event.key === 'ArrowUp' && event.shiftKey) { 
    // Your code 
    } 
} 
+0

Wenn das funktioniert, ich liebe es. Ich würde vorschlagen, ein Keydown-Event zu haben, das nach Shift sucht und einen Booleschen Wert auf True setzt. Dann eine Schlüsselfunktion, die den Booleschen Wert auf false setzt, wenn es sich um eine Verschiebung handelte, die hochgezählt wurde, aber wenn es die Pfeiltaste ist und der Boolesche Wert auf Wahr gesetzt ist, dann ist das Ihre Schicht + Hoch-Situation. – Kevin

+1

Es funktioniert nicht. Die Funktion wird nur aufgerufen, wenn ich 'hoch' drücke. Es wird nicht aufgerufen, wenn "shift" + "up" gedrückt wird, also kann ich nicht überprüfen, ob "event.shiftKey" wahr ist. –

+1

@ taras-d Sie haben Recht, es wurde kein Ereignis ausgelöst, wenn '' keyup.arrowup ''' 'shift'' bedauerlicherweise gedrückt wurde. Ich habe meine Antwort aktualisiert. – Arg0n

2

Ja, können Sie es wie folgt erreichen:

<input (keyup)="onKeyUp($event)"> 

.. und in Ihrem Typoskript Code:

onKeyUp($event): void { 
    if ($event.shiftKey && $event.which === 38) { 
     // Place your logic here 
    } 
} 

Hier ist ein Link zu PLUNKER DEMO arbeiten.

+0

Dies ist eine der möglichen Lösungen. Aber vielleicht gibt es eine Möglichkeit, so etwas zu schreiben '(keyup.shift + up) =" ... "'!? –

+0

Sie müssen die "shift + up" Logik in der Methode wie ich tat. Ich benutze das selbe in meinem Projekt. Siehe meine andere Antwort für eine generische Mac und Windows-Lösung für Strg + S: https://Stackoverflow.com/a/45569055/1791913 – Faisal

+1

Ich fand den Weg, wie ich es tun möchte. Ich habe meine Frage aktualisiert. –

Verwandte Themen