Saltar al contenido

¿Cómo y dónde usar ::ng-deep?

Recuerda que en la informática un problema suele tener diferentes resoluciones, por lo tanto nosotros aquí te compartimos lo más óptimo y mejor.

Solución:

Normalmente /deep/ “shadow-piercing” El combinador se puede usar para forzar un estilo a child components. Este selector tenía un alias >>> y ahora tiene otro llamado ::ng-deep.

ya que /deep/ combinator ha quedado en desuso, se recomienda utilizar ::ng-deep

Por ejemplo:

y css

.overview 
    ::ng-deep 
        p 
            &:last-child 
                margin-bottom: 0;
            
        
    

se aplicará a los componentes secundarios

USO

::ng-deep, >>> y /deep/ deshabilite la encapsulación de vista para reglas CSS específicas, en otras palabras, le da acceso a elementos DOM, que no están en el HTML de su componente. Por ejemplo, si usa Angular Material (o cualquier otra biblioteca de terceros como esta), algunos elementos generados están fuera del área de su componente (como diálogo) y no puede acceder a esos elementos directamente o usando una forma CSS normal. Si desea cambiar los estilos de esos elementos, puede usar una de esas tres cosas, por ejemplo:

::ng-deep .mat-dialog 
  /* styles here */

Por ahora, el equipo de Angular recomienda hacer “profundo” Manipulaciones solo con EMULADO ver encapsulación.

DEPRECACIÓN

“profundo” Las manipulaciones son en realidad obsoleto también, PERO todavía funciona por ahora, porque Angular admite preprocesamiento (no se apresure a rechazar ::ng-deep hoy echa un vistazo a prácticas de desaprobación primero).

De todos modos, antes de seguir por este camino, te recomiendo que eches un vistazo a deshabilitar la encapsulación de vista enfoque (que tampoco es ideal, permite que sus estilos se filtren en otros componentes), pero en algunos casos, es una mejor manera. Si decidió deshabilitar la encapsulación de vista, se recomienda enfáticamente usar clases específicas para evitar la intersección de las reglas CSS y, finalmente, evitar un desorden en sus hojas de estilo. Es realmente fácil deshabilitar directamente en el componente .ts expediente:

@Component(
  selector: '',
  template: '',
  styles: [''],
  encapsulation: ViewEncapsulation.None  // Use to disable CSS Encapsulation for this component
)

Puede encontrar más información sobre la encapsulación de vistas en este artículo.

Destacaría la importancia de limitar la ::ng-deep solo a los hijos de un componente al requerir que el padre sea una clase css encapsulada.

Para que esto funcione, es importante usar el ::ng-deep después del padre, no antes, de lo contrario se aplicaría a todas las clases con el mismo nombre en el momento en que se carga el componente.

Utilizando el :host palabra clave antes ::ng-deep manejará esto automáticamente:

:host ::ng-deep .mat-checkbox-layout

Alternativamente, puede lograr el mismo comportamiento agregando una clase CSS con ámbito de componente antes del ::ng-deep palabra clave:

.my-component ::ng-deep .mat-checkbox-layout 
    background-color: aqua;

Plantilla de componente:


El css resultante (generado por Angular) incluirá el nombre generado de forma única y se aplicará solo a su propia instancia de componente:

.my-component[_ngcontent-c1] .mat-checkbox-layout 
    background-color: aqua;

Reseñas y puntuaciones del artículo

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 3.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *