2017-01-24 6 views
0

Wissen Sie, wie kann ich eine class Variable innerhalb der @Component Deklaration verwenden?Verwenden Sie die Component-Klassenvariable in Component-Host

Dies ist der gewünschte Ansatz:

@Component({ 
    selector: "whatever", 
    host: { 
     "[class]":"className" 
    } 
}) 
export class MyComponent { 
    @Input() className:string="my-class-name"; 
} 

Erwartete Ergebnisse:

<whatever class="my-class-name"></whatever> 

Antwort

1

Sie können den HostBinding Dekorateur verwenden, um die gewünschten CSS-Klasse zurück zum Host-Elemente zu setzen:

@HostBinding('class.my-class-name') 
protected get myClass() { 
    return true; 
} 

[Bearbeiten]

Das obige Beispiel zeigt, wie eine statische CSS-Klasse für das Hostelement festgelegt wird. Um eine dynamische Klasse gesetzt, dann müssen Sie die Eigenschaft classname mit HostBinding Dekorateur dekorieren:

@HostBinding('class') 
@Input() 
public className:string = "my-class-name"; 

Plunker: https://plnkr.co/edit/iPbrYbUSZtkHiGLDyo2B?p=preview

+0

Ja, danke, ich habe bereits versucht, aber ich brauche die 'CSS-Klasse zu setzen 'Wert auf den Wert, den die' className'-Eingabe hat, nicht hartcodieren. Die Sache ist, dass ich nicht weiß, welche Klasse oder welchen Wert der 'className'-Eingang hat, also" hardcoding "mit: ' @HostBinding ('class.my-class-name') ' ist nicht eine Option. :/ – user4068063

+0

Ich aktualisierte die Antwort, um zu demonstrieren, wie die Klasse dynamisch festgelegt wird. Sorry für das Fehlen der ersten Frage :) –

+0

Vielen Dank, das ist die richtige Antwort! : D – user4068063

Verwandte Themen