Update 2 ::slotted
::slotted
wird jetzt von allen neuen Browsern unterstützt und kann mit verwendet werden ViewEncapsulation.ShadowDom
https://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
Update 1 :: ng-deep
/deep/
wurde veraltet und ersetzt durch ::ng-deep
.
::ng-deep
ist ebenfalls bereits als veraltet markiert, es ist jedoch noch kein Ersatz verfügbar.
Wenn ViewEncapsulation.Native
dies von allen Browsern ordnungsgemäß unterstützt wird und das Styling über Schatten-DOM-Grenzen hinweg unterstützt ::ng-deep
wird , wird dies wahrscheinlich eingestellt.
Original
Angular fügt dem HTML-Code, den es dem DOM hinzufügt, alle Arten von CSS-Klassen hinzu, um die Schatten-DOM-CSS-Kapselung zu emulieren und das Ausbluten von Komponenten zu verhindern. Angular schreibt auch das hinzugefügte CSS neu, um es diesen hinzugefügten Klassen anzupassen. Für HTML, das mit [innerHTML]
diesen Klassen hinzugefügt wurde, werden keine hinzugefügt und das neu geschriebene CSS stimmt nicht überein.
Versuchen Sie es als Problemumgehung
- für CSS zur Komponente hinzugefügt
/* :host /deep/ mySelector { */
:host ::ng-deep mySelector {
background-color: blue;
}
- für CSS hinzugefügt zu
index.html
/* body /deep/ mySelector { */
body ::ng-deep mySelector {
background-color: green;
}
>>>
(und das Äquivalent /deep/
, /deep/
funktioniert aber besser mit SASS) und ::shadow
wurden in 2.0.0-beta.10 hinzugefügt. Sie ähneln den Schatten-DOM-CSS-Kombinatoren (die veraltet sind) und funktionieren nur mit encapsulation: ViewEncapsulation.Emulated
den Standardeinstellungen in Angular2. Sie arbeiten wahrscheinlich auch mit ViewEncapsulation.None
, werden dann aber nur ignoriert, weil sie nicht notwendig sind. Diese Kombinatoren sind nur eine Zwischenlösung, bis erweiterte Funktionen für das komponentenübergreifende Styling unterstützt werden.
Ein anderer Ansatz ist zu verwenden
@Component({
...
encapsulation: ViewEncapsulation.None,
})
für alle Komponenten, die Ihr CSS blockieren (hängt davon ab, wo Sie das CSS hinzufügen und wo sich der HTML-Code befindet, den Sie formatieren möchten - möglicherweise alle Komponenten in Ihrer Anwendung)
Aktualisieren
Beispiel Plunker
index.html
?