Мы разрабатываем модал на Angular 5. Для удобства пользователь должен иметь возможность закрыть его клавишей Escape или выбрать опцию по умолчанию, нажав клавишу возврата.Я создал @HostListener
в своем ModalComponent
:
@HostListener('window:keydown', ['$event'])
keyEvent(event: KeyboardEvent) {
if (event.keyCode === 13) { // Return key
const index = this.modal.buttons.findIndex(button => button.default);
if (index >= 0) {
this.modal.buttons[index].fnc();
}
} else if (event.keyCode === 27) { // Escape key
this.closeModalAlt();
}
}
Однако, прежде чем HostListener
получит какое-либо ключевое событие, нужно нажать на модальное .Когда модал открывается и нажимается клавиша, ничего не происходит.Это очень неудобно.
Я предполагаю, что причиной такого поведения является ModalComponent
, только слушающий ключевые события, когда он сфокусирован.Мне нужно HostListener
, чтобы прослушивать события ключа во всем документе ( Я уже пробовал @HostListener('document:keydown',..)
, это тоже не сработало). Как заставить @HostListener
прослушивать все ключевые события?