Tengo un componente en Angular 2 llamado my-comp:
<my-comp></my-comp>
¿Cómo se estiliza el elemento host de este componente en Angular 2?
En Polymer, usaría el selector ": host". Lo probé en Angular 2. Pero no funciona.
:host {
display: block;
width: 100%;
height: 100%;
}
También intenté usar el componente como selector:
my-comp {
display: block;
width: 100%;
height: 100%;
}
Ambos enfoques no parecen funcionar.
Gracias.
css
angular
css-selectors
angular-components
Ravi Teja Gudapati
fuente
fuente
my-selector { color : red}
mi CSS y funciona bien.Respuestas:
Hubo un error, pero se corrigió mientras tanto.
:host { }
funciona bien ahora.También se admiten
:host(selector) { ... }
paraselector
hacer coincidir atributos, clases, ... en el elemento host:host-context(selector) { ... }
paraselector
unir elementos, clases, ... en componentes principalesselector /deep/ selector
(el aliasselector >>> selector
no funciona con SASS) para que los estilos coincidan a través de los límites de los elementosACTUALIZACIÓN: SASS está en desuso
/deep/
.Angular (TS y Dart) agregado
::ng-deep
como reemplazo que también es compatible con SASS.ACTUALIZACIÓN2:
::slotted
::slotted
ahora es compatible con todos los navegadores nuevos y se puede usar con `ViewEncapsulation.ShadowDomhttps://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
Consulte también Cargar estilo css externo en el componente Angular 2
/deep/
y>>>
se no se ve afectado por los mismos combinadores selector que en Chrome, que están en desuso.Angular los emula (reescribe) y, por lo tanto, no depende de los navegadores que los admitan.
Esta es también la razón
/deep/
y>>>
no funciona con loViewEncapsulation.Native
que permite el DOM nativo nativo y depende del soporte del navegador.fuente
@Component({selector: 'some-selector', template: 'xxx', styles: [':host { display: block; background-color: green; border: solid 1px red; }']}) export class SomeClass {}
ViewEncapsularion.Emulated
(predeterminado) pero no conNative
.:host { p { font-size: 80%; } }
trabajar en un archivo ... component.css. Tan pronto como trato de usarlostyles: [:host { p { font-size: 80%; } }]
, ya no funciona. Muy extraño.He encontrado una solución para diseñar solo el elemento componente. No he encontrado ninguna documentación sobre cómo funciona, pero puede poner valores de atributos en la directiva del componente, bajo la propiedad 'host' como esta:
ACTUALIZACIÓN: Como mencionó Günter Zöchbauer, hubo un error, y ahora puede diseñar el elemento host incluso en el archivo css, de esta manera:
fuente
!important
a anular). Tiene que haber una mejor manera: \host{}
en unstylesUrl
archivo no funciona. las necesidades:host
.@HostBinding('style.background-color') private color = 'lime';
Su ejemplo será: Google le encontrará muchos ejemplos y artículos.Mira este tema . Creo que el error se resolverá cuando se implemente la nueva lógica de precompilación de plantillas . Por ahora, creo que lo mejor que puedes hacer es envolver tu plantilla
<div class="root">
y diseñar estodiv
:Ver este saqueador
fuente
En su Componente, puede agregar .class a su elemento host si desea aplicar algunos estilos generales.
fuente
Para cualquiera que quiera diseñar elementos secundarios de un
:host
aquí, hay un ejemplo de cómo usar::ng-deep
:host::ng-deep <child element>
p.ej
:host::ng-deep span { color: red; }
Como otros dijeron
/deep/
está en desusofuente
Pruebe el: host> / deep /:
Agregue lo siguiente al archivo parent.component.less
Reemplace el componente app-child por su selector child
fuente