2016-04-28 5 views
8

in Angular 2 Klasse zu einem Host-Elemente geben ich eine Klasse mit dem Host-Elemente meiner Komponente geben will, so ich bis jetzt die host ähnlichen Immobilien Ich bekomme eine Warnung von TypeScript, dass dies eine schlechte Übung ist.Wie mit @hostbinding

Wie kann ich dem Host-Element eine Klasse korrekter hinzufügen und diese Warnung loswerden?

Thx!

Update: Basierend auf der Antwort unten: Ich bekomme die Klasse, aber der Stil hat keinen Einfluss auf das Eltern-Host-Element, nachdem die Klasse hinzugefügt wurde. Mein Stil ist ganz einfach:

.left-bar { 
    position: fixed; 
    width: 120px; 
    left: 0; 
    top: 0; 
    bottom: 0; 
    background: #323232; } 

Antwort

14

Der Führer Angular2 Stil sagt @HostBinding bevorzugen, aber dies nicht host: {...} eine schlechte Sache macht.

können Sie

@Component({ 
    selector: 'left-bar', 
    templateUrl: 'app/left-bar/left-bar.component.html', 
    styleUrls: ['app/left-bar/left-bar.component.css'] 
}) 
export class LeftBarComponent implements OnInit { 
    @HostBinding('class.left-bar') leftBarClass = true; 
    // or @HostBinding('class') leftBarClass = 'left-bar'; 

    ngOnInit() { 
    } 

} 
+0

Thx verwenden, das die Klasse fügt aber wenn ich dies meinen Stil zu tun beeinflussen nicht den Host-Element. –

+0

Haben Sie im Browser devtools eingecheckt, ob die Klasse tatsächlich hinzugefügt wurde? Vielleicht sind deine Stile nicht richtig. –

+0

Ja, die Klasse wurde hinzugefügt und ich habe überprüft, dass der Stil stimmt. Es funktioniert für alle untergeordneten Elemente, jedoch nicht für das Hostelement. –