Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止角度材质css样式传播到其他组件_Css_Angular_Sass_Angular Material - Fatal编程技术网

防止角度材质css样式传播到其他组件

防止角度材质css样式传播到其他组件,css,angular,sass,angular-material,Css,Angular,Sass,Angular Material,因此,我在全局scss样式中有一个对角度材质样式的替代,如下所示: .mat-form-field-infix{ padding: 0.5em 0 0.5em 0 !important; } 然后我想对组件中的同一元素应用不同的填充,因为我需要更多的空间来查看更多的数据;以下是我在组件scss样式中所做的工作: :host ::ng-deep .mat-form-field-infix{ padding: 0.2em 0 0.2em 0 !important; } 但最后一个样式

因此,我在全局scss样式中有一个对角度材质样式的替代,如下所示:

.mat-form-field-infix{
   padding: 0.5em 0 0.5em 0 !important;
}
然后我想对组件中的同一元素应用不同的填充,因为我需要更多的空间来查看更多的数据;以下是我在组件scss样式中所做的工作:

:host ::ng-deep .mat-form-field-infix{
   padding: 0.2em 0 0.2em 0 !important;
}

但最后一个样式在加载后会传播到所有组件。因此,问题是如何防止这种行为?

请注意,
::ng deep
注定会被弃用:请参阅

但是,您可以遵循Yuriy所描述的策略:如果您想要为
MyRoomy组件的所有后代添加额外的填充,您可以从全局样式中选择CSS,如

my-roomy-component .mat-form-field-infix {
  padding: 0.2em 0 0.2em 0 !important;
}

而且,正如尤里建议的那样,为选择器添加更多的特殊性,以帮助填充在没有
的情况下生效!重要信息
。或者,外部组件可以将其视图封装设置为“无”,以使其样式成为全局样式,但再次使用CSS选择器进行作用域设置。

使用并删除您的
!重要信息
覆盖。如何做到这一点,可以在示例或指向正确方向的内容中显示@yuriykravets您是否更改了视图封装?:带有::ng deep的主机应该只影响子组件。是的,我已经通过执行类似VieweCapsulation.NoneViewEncapsulation.None的操作尝试了这一点。None使样式全局化;您需要删除它,才能使
:host::ng deep
按预期工作。如何在全局scss文件中导入组件文件?我不能进口。