防止角度材质css样式传播到其他组件
因此,我在全局scss样式中有一个对角度材质样式的替代,如下所示:防止角度材质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; } 但最后一个样式
.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文件中导入组件文件?我不能进口。