límnico
Considere el siguiente componente sidebar.component.html
:
<div class="sidebar">
<ul>
<li class="tooltipped" data-position="right" data-delay="50" data-tooltip="Go to the dashboard">
<a href="#">
<i class="material-icons">home</i>
<span>Home</span>
</a>
</li>
<li class="tooltipped" data-position="right" data-delay="50" data-tooltip="Manage your times">
<a href="#">
<i class="material-icons">watch_later</i>
<span>Times</span>
</a>
</li>
<li class="tooltipped" data-position="right" data-delay="50" data-tooltip="Go to settings">
<a href="#">
<i class="material-icons">settings</i>
</a>
</li>
</ul>
</div>
En app.component.html
uso la barra lateral usando sus etiquetas (<sidebar>
). Sin embargo, ahora quiero hacerlo para que el <li>
Los elementos se dan dentro de la <sidebar>
etiquetas para que ya no estén dentro sidebar.component.html
para hacer que el componente sea reutilizable.
No estoy seguro de cómo se llama esto y tengo problemas para encontrarlo.
Gracias de antemano.
Cree un componente de barra lateral con un <ng-content>
donde se deben mostrar los niños pasados
@Component({
selector: 'sidebar',
template: '<ul><ng-content></ng-content></ul>'
})
export class SidebarComponent {
}
y usarlo como
<sidebar>
<li class="tooltipped" data-position="right" data-delay="50" data-tooltip="Go to the dashboard">
<a href="#">
<i class="material-icons">home</i>
<span>Home</span>
</a>
</li>
<li class="tooltipped" data-position="right" data-delay="50" data-tooltip="Manage your times">
<a href="#">
<i class="material-icons">watch_later</i>
<span>Times</span>
</a>
</li>
<li class="tooltipped" data-position="right" data-delay="50" data-tooltip="Go to settings">
<a href="#">
<i class="material-icons">settings</i>
</a>
</li>
</sidebar>
-
¡Sí, esto funciona según lo previsto! Sin embargo, ¿cuál es el comportamiento con CSS? Mi estilo ya no se aplica a los elementos, sin embargo, no puedo ver ningún cambio en el HTML que induzca un cambio en mis selectores.
– Límnico
16 de febrero de 2017 a las 12:29
-
El cambio es que Angular agrega
_ng_context-xxx
atributos y reescribe sus estilos antes de agregarlos al DOM. Necesitas agregar:host /deep/ li {}
o similar para hacer que los estilos crucen los límites de los componentes.– Günter Zöchbauer
16 de febrero de 2017 a las 12:31
-
Muy bien, gracias, ¡tengo suficiente información para comenzar!
– Límnico
16 de febrero de 2017 a las 12:36
No entiendo cuál es el problema. Tal vez
<ng-content></ng-content>
por transclusión?– Günter Zöchbauer
16 de febrero de 2017 a las 12:17
Actualicé la publicación para mayor claridad, probaré gracias.
– Límnico
16 de febrero de 2017 a las 12:20