首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有ng-deep的全局主题混合中使用主题颜色

在带有ng-deep的全局主题混合中使用主题颜色
EN

Stack Overflow用户
提问于 2020-01-13 17:40:02
回答 1查看 536关注 0票数 0

我使用的是在https://material.angular.io/guide/theming-your-components中指定的样式指南

我的组件有一个mat-form-field,我想在其中更改边框颜色。如果我将ng-deep样式放在component.scss文件中,它将被正确地应用,如下所示:

代码语言:javascript
复制
  :host ::ng-deep {
    mat-form-field.active-field .mat-form-field {
      &-flex {
        border: 2px solid red;
      }
    }
  }

现在,我希望保持边框颜色的动态性并依赖于主题。我在my-component-lib.heme.scss中定义了一个mixin,它从应用程序的全局主题文件中调用。我尝试将相同的样式放入到这个混入中,如下所示:

代码语言:javascript
复制
    @mixin my-component-lib-theme($theme) {
       $primary: map-get($theme, primary);

      .component-container ::ng-deep {
        mat-form-field.active-field .mat-form-field {
          &-flex {
            border: 2px solid lighten(mat-color($primary), 30);
          }
        }
      }
    }

但它不起作用。我在mixin中有一些不使用ng-deep的其他样式,这些样式工作得很好。所以,这里的问题似乎是::ng-deep在全球主题混合中的问题。我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-13 18:26:40

::ng-deep选择器是一个特定于Angular的伪类,它告诉Angular-Compiler,下面的CSS也应该应用于子组件。这个选择器不会在浏览器中结束,因为浏览器不会知道它!

您的全局主题文件可能直接包含在html中,就像这样的<link rel="stylesheet" type="text/css" href="path/to/global/theme.css">,它对angular一无所知(即使它可能是由SASS/SCSS编译的)。这里只需使用普通的老式CSS (如果使用默认的Angular CLI,则使用SASS/SCSS )。您可以在这里简单地省略::ng-deep选择器,因为您的全局主题无论如何都是全局应用的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59713919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档