Добавление обработчиков событий¶
30.09.2026
Angular позволяет задать обработчик события на элементе шаблона: имя события указывают в круглых скобках вместе с выражением, которое выполняется при каждом срабатывании события.
Прослушивание нативных событий¶
Чтобы добавить обработчик события к элементу HTML, имя события оборачивают круглыми скобками () и указывают выражение обработчика.
1 2 3 4 5 6 7 8 9 10 11 | |
В этом примере Angular вызывает updateField каждый раз, когда элемент <input> порождает событие keyup.
Обработчики можно добавить для любых нативных событий, например click, keydown, mouseover. Полный список — в статье все доступные события элементов на MDN.
Доступ к аргументу события¶
В каждом обработчике события шаблона Angular предоставляет переменную $event со ссылкой на объект события.
1 2 3 4 5 6 7 8 9 10 11 | |
Модификаторы клавиш¶
Чтобы поймать событие клавиатуры для конкретной клавиши, часто пишут код вроде такого:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Это частый случай, поэтому Angular позволяет отфильтровать события, указав конкретную клавишу через точку (.). Код упрощается до такого:
1 2 3 4 5 6 7 8 9 10 11 | |
Можно добавить и дополнительные модификаторы клавиш:
1 2 | |
Angular поддерживает модификаторы alt, control, meta и shift.
Для событий клавиатуры можно указать key или code. Поля key и code — штатная часть объекта события клавиатуры в браузере. По умолчанию привязка события считает, что нужны значения Key для событий клавиатуры.
Angular также позволяет указать значения Code для событий клавиатуры через встроенный суффикс code.
1 2 | |
Так проще одинаково обрабатывать события клавиатуры в разных операционных системах. Например, при клавише Alt на устройствах macOS свойство key сообщает клавишу по символу, уже изменённому клавишей Alt. Сочетание вроде Alt + S даёт значение key, равное 'ß'. Свойство code при этом соответствует нажатой физической или виртуальной кнопке, а не полученному символу.
Прослушивание глобальных целей¶
Имя глобальной цели можно поставить префиксом события. Поддерживаются три глобальные цели: window, document и body.
1 2 3 4 5 6 7 8 9 | |
Отмена поведения события по умолчанию¶
Если обработчик должен заменить штатное поведение браузера, используйте метод preventDefault объекта события:
1 2 3 4 5 6 7 8 9 10 11 12 | |
Если выражение обработчика события даёт false, Angular сам вызывает preventDefault(), по аналогии с нативными атрибутами обработчиков событий. Всегда лучше вызывать preventDefault явно: так намерение кода очевидно.
Расширение обработки событий¶
Систему событий Angular расширяют собственными плагинами событий, которые регистрируют через токен инъекции EVENT_MANAGER_PLUGINS.
Реализация плагина событий¶
Чтобы создать собственный плагин событий, расширьте класс EventManagerPlugin и реализуйте нужные методы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | |
Зарегистрируйте свой плагин через токен EVENT_MANAGER_PLUGINS в провайдерах приложения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
После регистрации собственный синтаксис событий работает и в шаблонах, и в свойстве host:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 | |
Источник: https://angular.dev/guide/templates/event-listeners