angular - 样式不适用于组件级别但适用于全局级别

标签 angular primeng primeng-dropdowns

我正在使用 ngPrime 组件,如果我为它们设置样式,则样式不会应用于 dashboard.component.sass 文件,但它们会在我使用全局 style.sass 文件时应用。

dashboard.component.html 文件

<p-dropdown [options]="reports" styleClass="report-dropdown">
      <ng-template let-item pTemplate="selectedItem">
        <i class="fas fa-th" style="fill: white;"></i>
        <span style="vertical-align:middle">
          {{item.label}}</span>
      </ng-template>
    </p-dropdown>

dashboard.component.scss 和全局style.scss 文件

.report-dropdown {
  .ui-dropdown-label {
    background-color: $secondary;
    color: white;
  }
  .ui-dropdown-trigger {
    color: white;
    background-color: $secondary;
    border: none;
  }
}

最佳答案

如果你想在你的组件中设置样式,你只需要在你想要应用的规则之前使用ng-deep

https://angular.io/guide/component-styles#deprecated-deep--and-ng-deep

它确实被弃用了,但目前还没有替代品,所以你现在还不如使用它

dashboard.component.scss

::ng-deep .report-dropdown {
  .ui-dropdown-label {
    background-color: $secondary;
    color: white;
  }
  .ui-dropdown-trigger {
    color: white;
    background-color: $secondary;
    border: none;
  }
}

我不知道 primeng,但我 fork 了一个显示颜色变化的旧 stackblitz(虽然下拉列表在示例中没有打开)

https://stackblitz.com/edit/primeng-bootstrap-ylpzwd?file=app/app.component.scss

其他解决方案

另一种解决方案是在全局样式表中设置样式。如果您的 CSS 规则比 ngPrime 默认应用的规则更具体,这将起作用

关于angular - 样式不适用于组件级别但适用于全局级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49528262/

相关文章:

javascript - 有人可以解释以下示例中 ...spread 运算符的使用吗?

angular - primeng 表根据用户选择保留列宽

angular - p-文件上传 : how to read file after upload

html - 如何在 PrimeNG 中单击后使焦点或边框消失

angular - Primeng 组件 UI 问题

typescript - 如何获取所选下拉值的文本名称

typescript - PrimeNG Angular 8 p-dropdown selectedItem 模板未渲染

angular - 如何使用查询字符串而不是 ';'

javascript - Angular2 setTimeout 返回 ZoneTask 而不是 "Number"

angular - 作业名称 "..getProjectMetadata"不存在