atualização 2 ::slotted
::slotted
agora é suportado por todos os novos navegadores e pode ser usado com ViewEncapsulation.ShadowDom
https://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
atualização 1 :: ng-deep
/deep/
foi descontinuado e substituído por ::ng-deep
.
::ng-deep
também já está marcado como obsoleto, mas ainda não há substituição disponível.
Quando ViewEncapsulation.Native
for adequadamente suportado por todos os navegadores e suportar estilo entre os limites do DOM da sombra, ::ng-deep
provavelmente será descontinuado.
original
Angular adiciona todos os tipos de classes CSS ao HTML que adiciona ao DOM para emular o encapsulamento CSS DOM de sombra para evitar estilos de sangramento dentro e fora dos componentes. Angular também reescreve o CSS adicionado para corresponder a essas classes adicionadas. Para HTML adicionado usando [innerHTML]
essas classes, não são adicionados e o CSS reescrito não corresponde.
Como uma solução alternativa, tente
- para CSS adicionado ao componente
/* :host /deep/ mySelector { */
:host ::ng-deep mySelector {
background-color: blue;
}
- para CSS adicionado a
index.html
/* body /deep/ mySelector { */
body ::ng-deep mySelector {
background-color: green;
}
>>>
(e o equivalente, /deep/
mas /deep/
funciona melhor com o SASS) e ::shadow
foram adicionados no 2.0.0-beta.10. Eles são semelhantes aos combinadores de sombra DOM CSS (que foram descontinuados) e só funcionam com o encapsulation: ViewEncapsulation.Emulated
que é o padrão no Angular2. Eles provavelmente também trabalham com, ViewEncapsulation.None
mas são ignorados apenas porque não são necessários. Esses combinadores são apenas uma solução intermediária até que recursos mais avançados para o estilo de componentes cruzados sejam suportados.
Outra abordagem é usar
@Component({
...
encapsulation: ViewEncapsulation.None,
})
para todos os componentes que bloqueiam seu CSS (depende de onde você adiciona o CSS e de onde você deseja estilizar o HTML - podem ser todos os componentes em seu aplicativo)
Atualizar
Exemplo Plunker
index.html
?