0

Angular 生成属性,并且似乎只将它们应用于您在模板中声明的元素。组件附带的任何其他 HTML 元素(在我的例子中是 angular-material's mat-form-field)都不会应用此属性。

这是设计使然吗?它的效果是无法定位那些内部元素,因为您在组件的 css 文件中定义的任何类都会与 Angular 生成的属性连接。

就我而言,

.mat-form-field * {
  border-radius: 0;
}

生成到:

mat-form-field[_ngcontent-c19] *[_ngcontent-c19] {
  border-radius: 0;
}

我的目标是对 a 所包含的许多 HTML 元素中的一些元素进行样式<mat-form-field>设置。

有什么方法可以从我的组件文件中实现这一点(无需求助于站点范围的样式表)?

4

1 回答 1

2

您必须使用 ::ng-deep 而不是 /deep/ 这似乎已被弃用。

mat-form-field ::ng-deep *

根据文档:

不推荐使用穿透阴影的后代组合器,并且正在从主要浏览器和工具中删除支持。因此,我们计划放弃对 Angular 的支持(对 /deep/、>>> 和 ::ng-deep 的所有 3 个)。在此之前 ::ng-deep 应该是首选,以便与工具更广泛地兼容。

你可以在这里找到

于 2018-09-21T18:00:00.357 回答