2017-02-16 17 views
7

Rozważmy następujący komponent sidebar.component.html:Przechodząc HTML do mojego składnika

<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> 

W app.component.html używam paska wykorzystując swoje tagi (<sidebar>). Teraz jednak chcę, aby elementy <li> zostały podane wewnątrz znaczników <sidebar>, aby nie były już wewnątrz sidebar.component.html, aby składnik mógł być ponownie użyty.

Nie jestem pewien, jak się to nazywa i nie mogę go znaleźć.

Z góry dziękuję.

+0

Nie rozumiem w czym jest problem. Być może '' do transclusion? –

+0

Zaktualizowałem post dla jasności, wypróbuję dzięki. – Limnic

Odpowiedz

10

Utwórz komponent paska bocznego z <ng-content> gdzie przeszły dzieci powinny być wyświetlane

@Component({ 
    selector: 'sidebar', 
    template: '<ul><ng-content></ng-content></ul>' 
}) 
export class SidebarComponent { 
} 

i używać go jak

<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> 
+0

Tak, działa to zgodnie z przeznaczeniem! Jakie jest jednak zachowanie w CSS? Moja stylizacja nie ma już zastosowania do elementów, jednak nie widzę żadnych zmian w kodzie HTML, które mogłyby spowodować zmianę w moich selektorach. – Limnic

+0

Zmiana polega na tym, że Angular dodaje atrybuty '_ng_context-xxx' i zmienia style, zanim doda je do DOM. Musisz dodać ': host/deep/li {}' lub coś podobnego, aby style przekroczyły granice komponentów. –

+1

Dobra dzięki, mam wystarczającą ilość informacji, aby mnie przekonać! – Limnic

Powiązane problemy