根本无法让 inputStyleClass 工作

Cannot get inputStyleClass to work at all

我在我的一个组件中使用 <p-calendar>。我试图在我的 sass 文件中使用 class 设置样式,但 inputStyleClass 根本没有任何效果。事实上,我什至在 Chromes DevTools 的样式中都看不到 class。但是,它显示为 <input> 元素 (ng-reflect-klass="calendar-input") 的属性。

我已经阅读了我能找到的所有内容(例如 )并尝试相应地做事。

这些是相关文件的简化示例:

无效:

时间-edit.component.html

<p-calendar [inputStyleClass]="'calendar-input'"></p-calendar>

时间-edit.component.sass

.calendar-input
  border-left: 5px solid #a94442 !important

作品:

时间-edit.component.html

<p-calendar [inputStyle]="{'border-left': '5px solid #a94442'}"></p-calendar>

但是,我不想这样设计它。

我做错了什么?为什么找不到 sass 文件中的 class?

这是由于 angular 的 ViewEncapsulation 默认设置为 ViewEncapsulation.Emulated
为了设置子组件样式,您有以下选项:

  1. 使用ViewEncapsulation.None
  2. 使用全局样式
  3. 使用::ng-deep,注意不推荐,因为它是mareked as deprecated

您可以在 this stackblitz

中查看 ViewEncapsulation.None 的工作示例