Eine einfache und elegante Lösung wie wie folgt aus: -
Erstellen Sie einen globalen Dienst, der die Verknüpfungen von Verknüpfungen mit anklickbaren Elementen speichert. Hinweis: - Verwenden Sie NgOnDestroy, um Bindungen auf Komponenten zu entfernen, wird zerstört.
Jetzt erstellen Sie eine Direktive, die Keycodes als Eingabe wie folgt nimmt.
<button [angularHotKey]="[17,78]">New Document</button>
<!-- CTRL = 17 & n = 78 -->
Jetzt in Ihrer meisten Komponente Wurzel, hört Drücken von Tasten und als Indizes verwendet für für HotKeys Elemente in Global Service zu lokalisieren. Jetzt, um die Referenz zu bekommen, mach so etwas.
Ich nehme an, Sie haben aufgezeichnet keycodes in diesem Format formatiert = 1-23-32 -..., vergessen Sie nicht, sie in aufsteigend zu sortieren/Format absteigend, sowohl während es das Hinzufügen Array in Dienst Keypair und während
Überprüfung
if(this.keypair[combo].length)this.keypair[combo].click();
this.keypair[combo]
enthalten Referenz des Elements, auf dem angularHotKey directive
wurde hinzugefügt.
Weitere Hinweise: 1.) In angularHotKey
Richtlinie während neues Schlüsselpaar hinzufügen und Element/klickbaren Verweis überprüfen Sie bitte, ob es nicht die Paarung mit gleicher Combo existieren, wenn ja eine Ausnahme werfen, es wird hilfreich sein, während das Debuggen und verhindern, dass Sie dumme Fehler machen, und in der Angular 2-Komponentenklasse definieren Sie in der ngOnDestroy-Methode eine Logik zum Entfernen aller Verknüpfungen, die mit den untergeordneten Elementen gepaart sind.
Besuchen Sie http://keycode.info/, um Keycodes für alle Arten von Tasten auf Ihrer Tastatur zu erhalten.
JavaScript multiple keys pressed at once Eine Antwort mit jedem kleinen Detail darüber, wie mit Combo-Taste drückt
scheint '' zu beschäftigen ist nicht für ‚unterstützt? (Fenster.? Keydown)'. Wahrscheinlich nur die Codes aufgelistet in https://github.com/angular/angular/blob/630d93150a58581a0d474ebf1befb5d09b6813c5/modules/angular2/src/platform/browser/browser_adapter.dart –
Auf meiner Tastatur "?" ist eigentlich "Shift + /", und (Fenster: Keydown) fängt sie getrennt auf. –
Ich bin mir nicht sicher, was ich aus deinem letzten Kommentar machen soll. Ist es eine Frage oder eine Klärung, ...? –