Как связать определенные клавиши с событиями Keyup и Keydown в Angular
Введение
При привязке к событиям keyup
или keydown
в ваших шаблонах Angular 2+ вы можете указать названия клавиш. Это применит фильтр, который будет применяться к событию, поэтому он будет срабатывать только при нажатии определенных клавиш.
В этой статье вы узнаете, как использовать имена клавиш при прослушивании событий keyup
и keydown
.
Использование ключевых имен
Во-первых, давайте рассмотрим пример без использования имени ключа.
Допустим, у нас есть элемент <input>
для предоставления пользователями информации. Мы хотим войти в консоль, когда пользователь нажимает клавишу ENTER
:
<input (keydown)="onKeydown($event)">
Мы связали обработчик события keydown
, который запускает onKeydown()
:
Затем давайте напишем функцию onKeydown()
для обработки нажатия клавиши ENTER
:
onKeydown(event) {
if (event.key === "Enter") {
console.log(event);
}
}
Проверка выполняется для каждого события keydown
, чтобы определить, является ли значение event.key
Enter
. Если true
, мы регистрируем event
в консоли.
Теперь тот же пример, но с добавлением имени клавиши ENTER
к событию:
<input (keydown.enter)="onKeydown($event)">
Мы связали обработчик keydown.enter
псевдо-события, который запускает onKeydown()
:
Далее давайте перепишем функцию onKeydown()
:
onKeydown(event) {
console.log(event);
}
Полагаясь на псевдособытие keydown.enter
Angular, больше не нужно вручную проверять, является ли значение event.key
Enter
.
Использование специальных клавиш-модификаторов и комбинаций
Эта функция работает для специальных клавиш и клавиш-модификаторов, таких как ENTER
, escape (ESC
), SHIFT
, ALT
, TAB
, BACKSPACE
и команда (мета):
Key(s) | Key Name |
---|---|
ENTER |
<input (keydown.enter)="..."> |
ESC |
<input (keydown.esc)="..."> |
ALT |
<input (keydown.alt)="..."> |
TAB |
<input (keydown.tab)="..."> |
BACKSPACE |
<input (keydown.backspace)="..."> |
CONTROL |
<input (keydown.control)="..."> |
COMMAND |
<input (keydown.meta)="..."> |
Но он также работает для букв, цифр, стрелок и функциональных клавиш (от F1
до F12
):
Key(s) | Key Name |
---|---|
A |
<input (keydown.a)="..."> |
9 |
<input (keydown.9)="..."> |
ARROWUP |
<input (keydown.arrowup)="..."> |
F4 |
<input (keydown.f4)="..."> |
Вот полный список ключевых значений, которые Angular может фильтровать.
Вы также можете комбинировать клавиши вместе, чтобы инициировать событие только при срабатывании комбинации клавиш. В следующем примере событие сработает только при одновременном нажатии клавиш CONTROL
и 1
:
<input (keyup.control.1)="onKeydown($event)">
Вот еще несколько примеров, чтобы дать вам представление о том, что возможно:
Key(s) | Key Name |
---|---|
SHIFT+ESC |
<input (keydown.shift.esc)="..."> |
SHIFT+ARROWDOWN |
<input (keydown.shift.arrowdown)="..."> |
SHIFT+CONTROL+Z |
<input (keydown.shift.control.z)="..."> |
Заключение
Вы узнали, как шаблоны Angular 2+ поддерживают фильтрацию имен ключей с помощью псевдособытий keyup
и keydown
.
Преимущества этого подхода включают меньше повторяющихся ручных проверок значений ключей и обработку комбинаций клавиш-модификаторов и клавиш без модификаторов.
Если вы хотите узнать больше об Angular, ознакомьтесь с нашей темой по Angular, где вы найдете упражнения и проекты по программированию.