【问题标题】:How do you disable view encapsulation in a third party component in angular2/4?如何在 angular2/4 中禁用第三方组件中的视图封装?
【发布时间】:2017-04-27 00:35:37
【问题描述】:

我想覆盖我正在使用的开源组件的样式,但我能找到禁用视图封装的唯一方法是在组件的装饰器上。当然,使用第三方模块意味着我无法编辑它的源代码。还能怎么办?

编辑

我知道 /deep/ 样式建议。我想要做的是使用 bootstrap 4 的样式覆盖第三方组件中的表格样式。自定义组件应用了一个 .table 类,但是通过视图封装,boostrap 4 类无法访问它。

我只想知道是否有一种方法可以完全禁用视图封装,而无需分叉代码并添加组件装饰器属性值“encapsulation: ViewEncapsulation.None”供我自己使用。

【问题讨论】:

    标签: css angular angular2viewencapsulation


    【解决方案1】:

    您可以使用 /deep/ css 选择器来覆盖嵌套组件的 css 样式。例如,该组件使用第三方组件,该组件使用“.dropdown”类创建下拉菜单。

    组件html:

     <ss-multiselect-dropdown #multipleSelect
                         [settings]="settings"
                         [options]="options"
                         [(ngModel)]="selectedOptions"
                         (ngModelChange)="onSelectChange($event)"></ss-multiselect-dropdown>
    

    这是覆盖下拉类的组件的css。

    /deep/ .dropdown {
      display: inline-block;
      width: 100%;
    }
    

    【讨论】:

    • 是的。有很多目的的好建议,但我的情况有点不同。查看我的编辑。
    • platformBrowserDynamic().bootstrapModule(AppModule, {defaultEncapsulation: ViewEncapsulation.None});
    • 更新:/deep/ 现在已弃用。所以可能需要不同的解决方案
    猜你喜欢
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多