Aby ominąć przestarzałe ::ng-deep
, zwykle wyłączamViewEncapsulation
. Chociaż nie jest to najlepsze podejście, dobrze mi służyło.
Aby wyłączyć ViewEncapsulation
, wykonaj następujące czynności w swoim komponencie:
import { Component, ViewEncapsulation } from '@angular/core';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class HeaderComponent {
}
Spowoduje to, że style .scss w tym komponencie będą globalne dla całej aplikacji. Aby nie pozwolić stylom na przechodzenie w górę łańcucha do komponentów rodzica i rodzeństwa, opakuj cały scss selektorem w następujący sposób:
app-header {
}
Teraz style określone tutaj zostaną przeniesione do komponentów podrzędnych, więc musisz być bardziej konkretny w swoich selektorach css i zwracać uwagę na swoje p i q podczas dodawania CSS (może dodać selektor potomny określony w aplikacji Angular, a następnie jego style).
Mówię, że nie jest to najlepsze podejście ze względu na powyższy akapit, ale to mi dobrze służyło.
::ng-deep
nigdzie się nie wybiera. Zawsze będzie to ustawienie, które możesz włączyć. Nie ma absolutnie żadnego sposobu, aby mogli go teraz usunąć bez masowego sprzeciwu społeczności. Zobacz, ile wyników wróci dla tego wyszukiwania github.com/search?q=%3A%3Ang-deep&type=Code - to tak, jakby powiedzieć, że!important
właściwość css zniknie