Эта статья даст вам более глубокое понимание нескольких специальных селекторов в Angular: хост, :host-context, ::ng-deep. Надеюсь, она будет вам полезна!
:host
:host означает выбор текущего компонента. [Рекомендуемые связанные учебные пособия: «учебник по Angular»]
1.1 Выбор хост-элемента
Используйте селектор псевдокласса :host
для выбора элементов в宿主元素
компонента (относительно элементов внутри шаблона компонента). Если дочерних элементов нет, это эквивалентно выбору всего宿主元素
.
Если есть следующий HTML:
<app-detail></app-detail>
Стиль компонента app-detail
(стиль всего app-detail
) следующий:
:хозяин { отображение: встроенный блок; фон: красный; }
Elements
браузера выбирают элемент app-detail
, а стиль выглядит следующим образом:
[_nghost-wtd-c445] { отображение: встроенный блок; цвет фона: красный; }
Видно, что :host
напрямую воздействует на宿主元素本身
1.2 Выбор дочерних элементов главного элемента
Вы можете добавить селектор после :host
для выбора子元素
. Например: :host h1
находит тег h1
в представлении компонента.
:хост h1 { цвет:красный; }
1.3 Условный выбор основных элементов
Это вступит в силу только в том случае, если хост используется в качестве цели и имеет активный класс.
:хост(.активный){ ширина границы: 3 пикселя; }
Так:
<app-detail class="active"></app-detail>
::ng-deep
::ng-deep может игнорировать вложенные иерархические отношения промежуточных имен классов. Непосредственно найдите имя класса, которое вы хотите изменить.
При использовании некоторых сторонних компонентов необходимо изменить стиль компонента. В этом случае используйте .
2.1 От главного элемента к текущему элементу, а затем ко всем дочерним элементам h3 в DOM, включая элементы h3 с использованием сторонних компонентов в текущем компоненте.
:host ::ng-deep h3 { стиль шрифта: курсив; }
2.2 Поиск определенного типа по определенному типу
.card-container ::ng-deep .ant-tabs-card .ant-tabs-content { высота: 120 пикселей; поле сверху: -16 пикселей; }
:host-context
Если для применения стиля необходимо выполнить определенное условие. Он ищет классы CSS в
祖先
узлах宿主元素
текущего компонента, вплоть до корневого узла документа.如果
они найдены, к внутренним элементам本组件
будут применены следующие стили.
3.1 Выбор элементов в главном элементе компонента
:хост-контекст { цвет:красный; }
3.2 Это вступит в силу только в том случае, если хост используется в качестве цели и имеет активный класс.
В следующем примере стиль background-color
будет применен ко всем элементам <h2>
本组件内部
только если祖先元素
(также можно использовать основной элемент) имеет класс CSS theme-light
.
:host-context(.theme-light) h2 { цвет фона: #eef; }
3.3 Вы можете добавить селектор после :host-context для выбора подэлементов.
Например: :host-context h1
находит тег h1
внутри представления компонента.
:хост-контекст h1{ цвет: ярко-розовый; }
3.4 Может использоваться для оценки внутреннего состояния определенного стиля.
h1{ цвет: ярко-розовый; :host-context(.active) &{ цвет: желтый; } }