【发布时间】:2018-09-21 17:54:17
【问题描述】:
Angular 生成属性,并且似乎只将它们应用于您在模板中声明的元素。组件附带的任何其他 HTML 元素(在我的例子中是 angular-material 的mat-form-field)都不会应用此属性。
这是设计使然吗?这样做的效果是无法定位这些内部元素,因为您在组件的 css 文件中定义的任何类都会与 Angular 生成的属性连接起来。
就我而言,
.mat-form-field * {
border-radius: 0;
}
生成到:
mat-form-field[_ngcontent-c19] *[_ngcontent-c19] {
border-radius: 0;
}
我的目标是为 <mat-form-field> 所包含的许多 HTML 元素设置样式。
有什么方法可以在我的组件文件中实现这一点(无需借助站点范围的样式表)?
【问题讨论】:
-
是的,你可以使用
::ng-deep选择器,所以mat-form-field ::ng-deep *应该做你想做的事 -
我认为
::ng-deep已被弃用 angular.io/guide/component-styles#deprecated-deep--and-ng-deep -
@pnadalini 是,但该页面的官方建议是
Until then ::ng-deep should be preferred for a broader compatibility with the tools.
标签: css angular angular-material angular-material-6