Este artículo le brindará una comprensión profunda de varios selectores especiales en Angular: host, :host-context, ::ng-deep. ¡Espero que le resulte útil!
:host
:host significa seleccionar el componente actual. [Tutoriales relacionados recomendados: "tutorial angular"]
1.1 Seleccionar elemento anfitrión
Utilice el selector de pseudoclase :host
para seleccionar elementos en el宿主元素
del componente (en relación con los elementos dentro de la plantilla del componente, si no hay elementos secundarios, es equivalente a seleccionar el宿主元素
completo).
Si existe el siguiente html:
<detalle-aplicación></detalle-aplicación>
El estilo del componente app-detail
(el estilo de todo el app-detail
) es el siguiente:
:anfitrión { pantalla: bloque en línea; fondo: rojo; }
Los Elements
del navegador seleccionan app-detail
y el Estilo es el siguiente:
[_nghost-wtd-c445] { pantalla: bloque en línea; color de fondo: rojo; }
Se puede ver que :host
actúa directamente sobre宿主元素本身
1.2 Seleccionar elementos secundarios del elemento anfitrión
Puede agregar un selector después de :host
para seleccionar子元素
. Por ejemplo: :host h1
ubica la etiqueta h1
dentro de la vista del componente
:anfitrión h1 { color: rojo; }
1.3 Selección condicional de elementos anfitriones.
Solo tendrá efecto cuando el anfitrión se utilice como objetivo y tenga una clase activa.
:host(.activo){ ancho de borde: 3px; }
Como esto:
<detalle de aplicación clase="activo"></detalle de aplicación>
::ng-deep
::ng-deep puede ignorar la relación jerárquica anidada de nombres de clases intermedios. Busque directamente el nombre de clase que desea modificar.
Cuando utilice algunos componentes de terceros, deberá modificar el estilo del componente. En este caso, utilice .
2.1 Del elemento anfitrión al elemento actual y luego a todos los elementos h3 secundarios en el DOM, incluidos los elementos h3 que utilizan componentes de terceros en el componente actual
:host ::ng-profundo h3 { estilo de fuente: cursiva; }
2.2 Buscar un tipo específico bajo un tipo determinado
.card-container ::ng-deep .ant-tabs-card .ant-tabs-content { altura: 120 píxeles; margen superior: -16px; }
:host-context
Si es necesario cumplir una determinada condición antes de poder aplicar el estilo. Busca clases CSS en los nodos
祖先
del宿主元素
del componente actual, hasta el nodo raíz del documento.如果
se encuentran, los siguientes estilos se aplicarán a los elementos internos本组件
.
3.1 Seleccionar elementos en el elemento anfitrión del componente
: contexto-host { color: rojo; }
3.2 Solo tendrá efecto cuando el anfitrión se utilice como objetivo y tenga una clase activa.
En el siguiente ejemplo, background-color
se aplicará a todos los elementos <h2>
本组件内部
solo si un祖先元素
(también se puede usar el elemento anfitrión) tiene la clase CSS theme-light
.
: contexto-host (.tema-luz) h2 { color de fondo: #eef; }
3.3 Puede agregar un selector después de :host-context para seleccionar subelementos
Por ejemplo: :host-context h1
ubica la etiqueta h1
dentro de la vista del componente
: contexto de host h1 { color: rosa fuerte; }
3.4 Se puede utilizar para juzgar las condiciones internas de un determinado estilo.
h1{ color: rosa intenso; : contexto-host(.activo) &{ color: amarillo; } }