如何将ngStyle应用于:组件中的host元素?

时间:2016-05-25 12:28:40

标签: angular shadow-dom angular2-template

我有这样的事情:

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

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

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

    constructor() {}
}

我想将属性 columnWidth 应用于 [ngStyle]

<ng-content></ng-content>

父元素,做这样的事情:

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

我知道如何将样式应用于主持元素:

:host {  /*styles*/  }

但我不知道将参数传递给它。

2 个答案:

答案 0 :(得分:17)

没有办法做到这一点。

你能做的是

        Console.WriteLine(getHighestPrime(getDenoms(600851475143)));

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

主要限制是@HostBinding('style.width.px') width:number = '10'; 部分是固定的,无法从变量中使用。

具有完全灵活性的另一种方式是

width

答案 1 :(得分:0)

我实际上使用了@GunterZochbauer的解决方案,但他提到您不能使用变量。也许那时是正确的,但是有了最新的角度,您完全可以。

@HostBinding('style.width.px')
get width(): number {
  return state.width;
}

我正在使用状态管理来设置宽度,然后将其直接应用于宿主元素。效果很好!