2016-07-01 12 views
7

Come faccio a rilevare qualsiasi pressione di un tasto sul angolare 2 (ad esempio, non necessariamente in una casella di input)Come rilevare la pressione di un tasto in Angular 2?

Attualmente sono riuscito a farlo usando il seguente codice:

import {Component, HostListener} from "@angular/core"; 

@Component(<any>{ 
    selector: 'foo', 
    template: `<h1>Foo</h1>`, 
}) 
export class FooComponent { 
    @HostListener('document:keypress', ['$event']) 
    keypress(e: KeyboardEvent) { 
     console.log("Key Up! " + e.key); 
    } 
} 

Il codice di cui sopra riesce a funzionare bene per la maggior parte dei personaggi, ad es alfanumerico, punteggiatura, simboli, ecc

Il problema è che questo metodo non viene eseguito quando si premono i tasti come MAIUSC, CTRL, F1 ... F12, Tab, ecc ALT

+2

È necessario utilizzare ('document: keydown') invece di premere il tasto per ottenere shift, ctrl, ecc ... –

+1

Funziona! Per favore scrivi il tuo commento come risposta, quindi posso accettarlo. –

+0

Potrebbe essere aggiunto alla risposta (docu): https://angular.io/docs/ts/latest/guide/user-input.html – bene

risposta

7

Devi usare ('document:keydown') invece di ('document:keypress') per ottenere shift, ctrl ...

+0

anche utile per ottenere Fuga – Bob

Problemi correlati