VERWENDUNG
::ng-deep
, >>>
Und /deep/
deaktivieren Ansicht Kapselung für bestimmte CSS - Regeln, mit anderen Worten, es gibt Sie auf DOM - Elemente zuzugreifen, die nicht der HTML - Code in Ihrer Komponente sind. Wenn Sie beispielsweise Angular Material (oder eine andere Bibliothek von Drittanbietern wie diese) verwenden, befinden sich einige generierte Elemente außerhalb des Bereichs Ihrer Komponente (z. B. Dialogfeld ), und Sie können nicht direkt oder mithilfe eines normalen CSS auf diese Elemente zugreifen Weg. Wenn Sie die Stile dieser Elemente ändern möchten, können Sie eines dieser drei Dinge verwenden, zum Beispiel:
::ng-deep .mat-dialog {
}
Derzeit empfiehlt das Angular-Team, "tiefe" Manipulationen nur mit EMULATED- Ansichtskapselung durchzuführen .
MISSBILLIGUNG
"tiefe" Manipulationen sind ebenfalls veraltet , ABER es funktioniert vorerst noch, da Angular die Vorverarbeitung unterstützt (beeilen Sie sich nicht, dies ::ng-deep
heute abzulehnen , werfen Sie zuerst einen Blick auf die Abwertungspraktiken ).
Bevor Sie diesen Weg gehen, empfehle ich Ihnen, einen Blick auf das Deaktivieren des Ansatzes zur Ansichtskapselung zu werfen (was auch nicht ideal ist, da Ihre Stile in andere Komponenten eindringen können), aber in einigen Fällen ist dies ein besserer Weg. Wenn Sie die Ansichtskapselung deaktivieren möchten, wird dringend empfohlen, bestimmte Klassen zu verwenden, um Überschneidungen von CSS-Regeln zu vermeiden und schließlich ein Durcheinander in Ihren Stylesheets zu vermeiden. Es ist wirklich einfach, direkt in der .ts
Datei der Komponente zu deaktivieren :
@Component({
selector: '',
template: '',
styles: [''],
encapsulation: ViewEncapsulation.None
})
Weitere Informationen zur Ansichtskapselung finden Sie in diesem Artikel.
/deep/
und::ng-deep
beide sind veraltet, empfehle ich Ihnen auf diese Antwort zu nehmen alook stackoverflow.com/a/49308475/2275011 für weitere Details und Lösungen und Kommentare.