2017-02-20 29 views
12

Tôi đang sử dụng phương pháp sau đây để phát hiện các bấm phím trên một trang. Kế hoạch của tôi là phát hiện khi phím Escape được nhấn và chạy một phương thức nếu có. Hiện tại tôi đang cố gắng ghi lại phím nào được nhấn. Tuy nhiên phím Escape không bao giờ được phát hiện.Góc 2 HostListener bấm phím phát hiện phím thoát?

@HostListener('document:keypress', ['$event']) 
handleKeyboardEvent(event: KeyboardEvent) { 
    console.log(event); 
    let x = event.keyCode; 
    if (x === 27) { 
     console.log('Escape!'); 
    } 
} 

Trả lời

19

Hãy thử nó với một sự kiện keydown hay keyup để nắm bắt chìa khóa Esc.

+1

Cảm ơn bro. bạn đã làm cho ngày của tôi! –

+0

Để quyết định một trong những sự kiện quan trọng cần sử dụng, hãy kiểm tra câu trả lời SO này: https://stackoverflow.com/a/46403258/3380547 – Sagar

+0

Đó chỉ là 'keyup' làm việc cho tôi: ngón tay cái lên: – vincecampanale

15

Nó làm việc cho tôi bằng cách sử dụng đoạn mã sau:

const ESCAPE_KEYCODE = 27; 

@HostListener('document:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) { 
    if (event.keyCode === ESCAPE_KEYCODE) { 
     // ... 
    } 
} 

hoặc theo cách ngắn hơn:

@HostListener('document:keydown.escape', ['$event']) onKeydownHandler(evt: KeyboardEvent) { 
    // ... 
} 
0

cách tiếp cận hiện đại

@HostListener('document:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) { 
    if (event.key === "Escape") { 
     // Do things 
    } 
} 
Các vấn đề liên quan