2016-05-25 14 views
7

Ich habe so etwas wie dies:Wie wird ngStyle auf das Host-Element in der Komponente angewendet?

import { Component, OnInit, Input } from '@angular/core'; 

@Component({ 
    selector: 'column', 
    template: '<ng-content></ng-content>' 
}) 
export class ColumnComponent { 

    @Input() columnWidth: string = '0';   

    constructor() {} 
} 

und ich möchte gelten Eigenschaft column zu [ngstyle] auf

<ng-content></ng-content> 

Elternelement, um so etwas zu tun:

<div [ngStyle]="{'width': columnWidth+'px'}" > .... 

Ich weiß, wie man Stil auf Host-Element anwenden:

aber ich weiß nicht, Parameter zu übergeben.

Antwort

10

Es gibt keine Möglichkeit, dies zu tun.

Was Sie tun können, ist

@HostBinding('style.width') 
width:string = '10px'; 

oder

@HostBinding('style.width.px') 
width:number = '10'; 

Die wichtigste Einschränkung ist, dass der width Teil fest ist und nicht von einer Variablen verwendet werden kann.

Eine weitere Möglichkeit, bei voller Flexibilität

constructor(private elRef:ElementRef, private renderer:Renderer) {} 

setStyles() { 
    this.renderer.setElementStyle(this.elRef.nativeElement, 'width', '10px'); 
} 
+0

ist habe ich Fehler: nicht zu ‚column‘ binden kann, da es keine bekannte einheimische Eigenschaft (“ ] [columnWidth] = "150"> –

+1

Wenn Sie den Eingabewert an den Stil '@HostBinding ('style.width.px') binden wollen @ Input() columnWidth: string = '0'; 'sollte funktionieren. Was hast du probiert? –

+0

Ich habe Input() verpasst .. thx –