Este artigo lhe dará uma compreensão aprofundada de vários seletores especiais em Angular: host, :host-context, ::ng-deep Espero que seja útil para você!
:host
:host significa selecionar o componente atual. [Tutoriais relacionados recomendados: "tutorial angular"]
1.1 Selecione o elemento hospedeiro
Use o seletor de pseudoclasse :host
para selecionar elementos no宿主元素
do componente (em relação aos elementos dentro do modelo do componente). Se não houver elementos filhos, é equivalente a selecionar o宿主元素
inteiro.
Se houver o seguinte html:
<app-detail></app-detail>
O estilo do componente app-detail
(o estilo de todo o app-detail
) é o seguinte:
:hospedar { display: bloco embutido; fundo: vermelho; }
Os Elements
do navegador selecionam app-detail
e o estilo é o seguinte:
[_nghost-wtd-c445] { display: bloco embutido; cor de fundo: vermelho; }
Pode-se ver que :host
atua diretamente no宿主元素本身
1.2 Selecione os elementos filhos do elemento host
Você pode adicionar um seletor depois de :host
para selecionar子元素
. Por exemplo: :host h1
localiza a tag h1
na visualização do componente
:host h1 { cor:vermelho; }
1.3 Seleção condicional de elementos hospedeiros
Só terá efeito quando o host for usado como alvo e tiver uma classe ativa.
:host(.ativo){ largura da borda: 3px; }
Assim:
<app-detail class="active"></app-detail>
::ng-deep
::ng-deep pode ignorar o relacionamento hierárquico aninhado de classNames intermediários. Encontre diretamente o className que você deseja modificar.
Ao usar alguns componentes de terceiros, você precisa modificar o estilo do componente. Nesse caso, use .
2.1 Do elemento host ao elemento atual e depois a todos os elementos filhos h3 no DOM, incluindo elementos h3 usando componentes de terceiros no componente atual
:host ::ng-deep h3 { estilo da fonte: itálico; }
2.2 Pesquise um tipo específico em um determinado tipo
.card-container ::ng-deep .ant-tabs-card .ant-tabs-content { altura: 120px; margem superior: -16px; }
:host-context
Se uma determinada condição precisar ser atendida antes que o estilo possa ser aplicado. Ele procura classes CSS nos nós
祖先
do宿主元素
do componente atual, até o nó raiz do documento.如果
encontrado, os seguintes estilos serão aplicados aos elementos internos本组件
.
3.1 Selecione elementos no elemento host do componente
:host-contexto { cor:vermelho; }
3.2 Só terá efeito quando o host for usado como alvo e tiver uma classe ativa.
No exemplo a seguir, background-color
será aplicado a todos os elementos <h2>
本组件内部
somente se um祖先元素
(o elemento host também pode ser usado) tiver a classe CSS theme-light
.
:host-context(.theme-light) h2 { cor de fundo: #eef; }
3.3 Você pode adicionar um seletor após :host-context para selecionar subelementos
Por exemplo: :host-context h1
localiza a tag h1
dentro da visualização do componente
:contexto de host h1{ cor: rosa choque; }
3.4 Pode ser usado para julgar as condições internas de um determinado estilo
h1{ cor: rosa choque; :host-context(.ativo) &{ cor: amarelo; } }