aggiornamento 2 ::slotted
::slotted
è ora supportato da tutti i nuovi browser e può essere utilizzato con ViewEncapsulation.ShadowDom
https://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
aggiornamento 1 :: ng-deep
/deep/
è stato deprecato e sostituito da ::ng-deep
.
::ng-deep
è anche contrassegnato come obsoleto, ma non è ancora disponibile alcun sostituto.
Quando ViewEncapsulation.Native
è adeguatamente supportato da tutti i browser e supporta lo stile oltre i confini del DOM ombra, ::ng-deep
verrà probabilmente interrotto.
originale
Angular aggiunge tutti i tipi di classi CSS all'HTML che aggiunge al DOM per emulare l'incapsulamento CSS dell'ombra DOM per prevenire stili di bleeding dentro e fuori dai componenti. Angular riscrive anche il CSS che aggiungi per abbinare queste classi aggiunte. Per HTML aggiunto usando [innerHTML]
queste classi non vengono aggiunti e il CSS riscritto non corrisponde.
Come soluzione alternativa, prova
- per CSS aggiunto al componente
/* :host /deep/ mySelector { */
:host ::ng-deep mySelector {
background-color: blue;
}
- per CSS aggiunto a
index.html
/* body /deep/ mySelector { */
body ::ng-deep mySelector {
background-color: green;
}
>>>
(e l'equivalente /deep/
ma /deep/
funziona meglio con SASS) e ::shadow
sono stati aggiunti in 2.0.0-beta.10. Sono simili ai combinatori CSS DOM shadow (che sono obsoleti) e funzionano solo con encapsulation: ViewEncapsulation.Emulated
il valore predefinito in Angular2. Probabilmente funzionano anche con, ViewEncapsulation.None
ma vengono ignorati solo perché non sono necessari. Questi combinatori sono solo una soluzione intermedia fino a quando non saranno supportate funzionalità più avanzate per lo stile tra componenti.
Un altro approccio è usare
@Component({
...
encapsulation: ViewEncapsulation.None,
})
per tutti i componenti che bloccano il tuo CSS (dipende da dove aggiungi il CSS e dove si trova lo stile HTML che desideri - potrebbero essere tutti i componenti nella tua applicazione)
Aggiornare
Esempio Plunker
index.html
?