按 ID 设置 Angular2 组件样式

Angular2 Component Styling by ID

我正在为 Angular 使用 kendo-ui 控件,并且需要一种方法来设置单个组件的样式。我知道您可以像 :host /deep/ .k-numeric-wrap {} 那样将样式应用于相同 class 的所有组件,但我如何将 :host /deep/ 策略应用于单个组件?

例如 kendo-autocomplete 看起来像这样:

我将kendo-autocomplete定义为HTML中的#language id。有谁知道只为 #language 访问样式的方法吗?我试过:

:host #language .k-autocomplete {}
:host(#language) .k-autocomplete {}

我在 kendo-autocomplete 元素上没有看到 id="language"

这就是为什么带有 #language 的选择器不起作用的原因。

此外,由于 k-autocomplete class 在元素本身上,选择器应该是 #language.k-autocomplete,它们之间没有 space。无论如何,选择器的 class 部分是多余的,因为 ID 选择器是最具体的。

编辑:

好的,这应该有效(已测试):

  1. 使用 id="language" 代替 #language
  2. 在您的样式中,写入以下内容:

    /deep/ #language {
        max-width: 10em;
    }
    

查看演示 here

到目前为止,我发现唯一可行的方法是旧的内联 style 标记。这不是最好的解决方案,但适用于我的情况,因为我只想设置 max-width:

<kendo-autocomplete #language
    style="max-width: 10em;"
    formControlName="langSelect"
    [valueField]="'Descrip'"
    [placeholder]="'e.g. French'"
    [data]="langSet">
</kendo-autocomplete>