Eu tenho componente no Angular 2 chamado my-comp:
<my-comp></my-comp>
Como um estilo é o elemento host desse componente no Angular 2?
No polímero, você usaria o seletor ": host". Eu tentei no Angular 2. Mas não funciona.
:host {
display: block;
width: 100%;
height: 100%;
}
Eu também tentei usar o componente como seletor:
my-comp {
display: block;
width: 100%;
height: 100%;
}
Ambas as abordagens parecem não funcionar.
Obrigado.
css
angular
css-selectors
angular-components
Ravi Teja Gudapati
fonte
fonte
my-selector { color : red}
no meu css e funciona bem.Respostas:
Houve um erro, mas foi corrigido enquanto isso.
:host { }
funciona bem agora.Também são suportados
:host(selector) { ... }
paraselector
corresponder atributos, classes, ... no elemento host:host-context(selector) { ... }
paraselector
combinar elementos, classes, ... nos componentes paiselector /deep/ selector
(o aliasselector >>> selector
não funciona com o SASS) para que os estilos correspondam aos limites dos elementosUPDATE: SASS está obsoleto
/deep/
.Angular (TS e Dart) adicionado
::ng-deep
como um substituto que também é compatível com o SASS.UPDATE2:
::slotted
::slotted
agora é suportado por todos os novos navegadores e pode ser usado com o `ViewEncapsulation.ShadowDomhttps://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
Consulte também Carregar estilo css externo no componente Angular 2
/deep/
e não>>>
são afetados pelos mesmos combinadores de seletor que no Chrome que foram preteridos.Angular os emula (reescreve) e, portanto, não depende dos navegadores que os suportam.
É também por isso
/deep/
e>>>
não fazer o trabalho comViewEncapsulation.Native
o que permite DOM sombra nativa e depende do apoio browser.fonte
@Component({selector: 'some-selector', template: 'xxx', styles: [':host { display: block; background-color: green; border: solid 1px red; }']}) export class SomeClass {}
ViewEncapsularion.Emulated
(padrão), mas não comNative
.:host { p { font-size: 80%; } }
trabalhar em um arquivo ... component.css. Assim que eu tento usá-lo,styles: [:host { p { font-size: 80%; } }]
ele não funciona mais. Muito estranho.Eu encontrei uma solução como estilizar apenas o elemento componente. Não encontrei nenhuma documentação sobre como funciona, mas você pode colocar valores de atributos na diretiva component, na propriedade 'host', como esta:
ATUALIZAÇÃO: Como Günter Zöchbauer mencionou, houve um erro e agora você pode estilizar o elemento host mesmo no arquivo css, assim:
fonte
!important
a substituição). Tem que haver uma maneira melhor: \host{}
em umstylesUrl
arquivo não funciona. necessidades:host
.@HostBinding('style.background-color') private color = 'lime';
Google encontrará muitos exemplos e artigos.Confira este problema . Eu acho que o bug será resolvido quando a nova lógica de pré-compilação do modelo for implementada. Por enquanto, acho que o melhor que você pode fazer é envolver seu modelo
<div class="root">
e estilizar issodiv
:Veja este plunker
fonte
No seu Component, você pode adicionar .class ao seu elemento host, se tiver alguns estilos gerais que deseja aplicar.
fonte
Para quem deseja estilizar elementos filho de um
:host
aqui é um exemplo de como usar::ng-deep
:host::ng-deep <child element>
por exemplo
:host::ng-deep span { color: red; }
Como outros disseram que
/deep/
está obsoletofonte
Experimente o: host> / deep /:
Adicione o seguinte ao arquivo parent.component.less
Substitua o componente filho do aplicativo pelo seletor filho
fonte