Para evitar lo obsoleto ::ng-deep
, generalmente desactivo ViewEncapsulation
. Aunque este no es el mejor enfoque, me ha servido bien.
Para deshabilitar ViewEncapsulation
, haga lo siguiente en su componente:
import { Component, ViewEncapsulation } from '@angular/core';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class HeaderComponent {
}
Esto hará que los estilos .scss de este componente sean globales para toda la aplicación. Para no permitir que los estilos suban por la cadena a los componentes principales y hermanos, envuelva todo el scss con el selector de la siguiente manera:
app-header {
}
Ahora, los estilos especificados aquí se reducirán a los componentes secundarios, por lo que debe ser más específico con sus selectores css y tener en cuenta sus p y q cuando agregue CSS (tal vez agregue el selector secundario especificado en su aplicación Angular y luego sus estilos).
Digo que no es el mejor enfoque debido al párrafo anterior, pero esto me ha servido bien.
::ng-deep
no va a ninguna parte. Siempre será una configuración que pueda habilitar. No hay absolutamente ninguna forma de que puedan eliminarlo ahora sin una reacción masiva de la comunidad. Mire cuántos resultados regresan para esta búsqueda github.com/search?q=%3A%3Ang-deep&type=Code - es como decir que la!important
propiedad css va a desaparecer