2016-09-26 9 views
6

Próbuję zastosować style do komponentu ngbTooltip w mojej aplikacji Angular 2. I stosuje się dyrektywę, jak:Jak stylizować komponenty ng-bootstrap w Angular 2

<div [ngbTooltip]="tooltipText"> 
    Element text 
</div> 

Ale ponieważ kątowa 2 stosuje styl scopingu, nie mogę bezpośrednio styl klasę w szablonie mojego komponentu .tooltip.

Jak mogę podać etykietki narzędzi dla tego konkretnego składnika w niestandardowej stylizacji?

EDIT:

Mam stylów SCSS, który jest dołączony do mojego składnika. My style (uproszczony) są:

.license-circle { 
    width: 10px; 
    ... other styles 
} 

/deep/ .tooltip { 
    &.in { 
     opacity: 1; 
    } 
} 

Ale moi świadczone style wyglądać następująco:

<style> 
.license-circle[_ngcontent-uvi-11] { 
    width: 10px; } 

.tooltip.in { 
    opacity: 1; } 
</style> 

co sprawia mi wierzyć style podpowiedzi są jest un-obudowane (zamiast po prostu przebijania tego składnika dzieci

. Uwaga: próbowałem :host >>> .tooltip i to nie działa, więc skończyło się używając /deep/

.

Dzięki!

+0

http://stackoverflow.com/questions/34542143/load-external-css-style-into-angular-2-component/ 34963135 # 34963135 może pomóc (przekłuwanie cienia) –

+0

Zadziałało, dzięki! Ale martwię się, że te przenikliwe style będą globalne. –

+0

Co masz na myśli mówiąc "globalny"? Jeśli uruchamiasz selektor za pomocą ': host ... ', to są one stosowane tylko do tego komponentu i jego elementów potomnych. –

Odpowiedz

7

Jak wspomniano w komentarzu, selektory powinien zacząć :host

:host .license-circle { 
    width: 10px; 
    ... other styles 
} 

:host /deep/ .tooltip { 
    &.in { 
     opacity: 1; 
    } 
} 
+0

Wielkie dzięki! Pomyślałem: ': host >>>' == '/ deep /' i nie zdawałem sobie sprawy, że brakuje mi ': host' :) –

+0

Rozumiem. Tak ''>' i '/ deep /' są wymienne. Wspomniano gdzieś, że jeden z nich działa lepiej w SASS, ale nie pamiętam, który: -/ –

+1

Dla zapisu używam sass i '/ deep /' :) –