Элементы-хосты компонентов¶
30.09.2026
Этот материал предполагает, что вы уже прочитали руководство по основам. Если Angular для вас в новинку, начните с него.
Angular создаёт экземпляр компонента для каждого HTML-элемента, который совпал с селектором компонента. DOM-элемент, совпавший с селектором, — это элемент-хост компонента. Содержимое шаблона отрисовывается внутри элемента-хоста.
1 2 3 4 5 6 | |
1 2 3 4 | |
1 2 3 4 5 6 | |
В примере выше <profile-photo> — элемент-хост компонента ProfilePhoto.
Привязка к элементу-хосту¶
Компонент может привязать к своему элементу-хосту свойства, атрибуты, стили и события. Это те же привязки, что и у элементов внутри шаблона, только задаются они свойством host в декораторе @Component:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
К имени события можно добавить глобальную цель: document:, window: или body:.
Имена клавиш вроде '(keydown.enter)' сравниваются с KeyboardEvent.key и зависят от раскладки и языка ввода. Чтобы попасть в физическую клавишу независимо от раскладки, используйте модификатор code, например '(keydown.code.Enter)'. Подробнее в разделе Модификаторы клавиш.
Декораторы @HostBinding и @HostListener¶
К элементу-хосту можно привязаться и декораторами @HostBinding и @HostListener на членах класса.
@HostBinding привязывает свойства и атрибуты хоста к свойствам и геттерам:
1 2 3 4 5 6 7 8 9 10 11 12 | |
@HostListener вешает обработчик события на элемент-хост. Декоратор принимает имя события и необязательный массив аргументов:
1 2 3 4 5 6 | |
Предпочитайте свойство host декораторам
Всегда предпочитайте свойство host декораторам @HostBinding и @HostListener. Эти декораторы оставлены только для обратной совместимости.
Конфликты привязок¶
В шаблоне на элемент экземпляра компонента можно повесить свои привязки. Компонент тоже может задать привязки хоста к тем же свойствам или атрибутам.
1 2 3 4 5 6 7 8 | |
1 | |
Какое значение победит, решают такие правила:
- Если оба значения статические, побеждает привязка экземпляра.
- Если одно значение статическое, а другое динамическое, побеждает динамическое.
- Если оба значения динамические, побеждает привязка хоста компонента.
Стили через пользовательские свойства CSS¶
Стили компонента часто настраивают через пользовательские свойства CSS. На элемент-хост их задают привязкой стиля.
1 2 3 4 5 6 7 8 9 | |
В примере пользовательское свойство CSS --my-background привязано к сигналу color. Значение свойства обновляется само, когда меняется сигнал color. Это затрагивает текущий компонент и всех потомков, которые опираются на это свойство.
Пользовательские свойства на дочерних компонентах¶
Пользовательские свойства CSS можно задать и на элементе-хосте дочернего компонента той же привязкой стиля.
1 2 3 4 5 6 7 | |
Чтение атрибутов элемента-хоста¶
Компоненты и директивы читают статические атрибуты своего элемента-хоста через HostAttributeToken и функцию inject.
1 2 3 4 5 6 7 8 9 | |
1 | |
HostAttributeToken выбрасывает ошибку, если атрибут отсутствует, кроме случая, когда инъекция помечена как необязательная.
Источник: https://angular.dev/guide/components/host-elements