javascript - 导入时更改角度库的主题
问题描述
我正在尝试做一些具体的事情,但找不到任何关于它的信息。我想做的是用我的样式组件(大小,字体,..)制作一个通用的角度库,然后在 2 个不同的项目中导入这个库,到目前为止一切都很好。
但现在我希望这 2 个项目有不同的颜色/字体/图标主题。所以我需要一种在父项目中定义主题的方法,然后将其应用于库组件的样式。
这样,我在库中的所有组件都可以保持不变(单一代码库),并且可以在具有房屋风格的不同应用程序中使用。
有没有办法做到这一点?
亲切的问候,P90K
解决方案
创建一个 Angular 库
要创建 Angular 库,您可以按照此处的指南进行操作。您必须将其发布npm
并安装在您的项目上。
风格你的图书馆
1.改变风格封装ViewEncapsulation
定义可用于组件的模板和样式封装选项Component
。通过使用ViewEncapsulation.None
,您将样式暴露给外部组件。
import { Component, ViewEncapsulation } from '@angular/core';
@Component({
...
encapsulation: ViewEncapsulation.None,
...
})
注意:这有助于覆盖任何组件 CSS,但请务必使用正确的选择器
2.使用:host
host
可以帮助覆盖 CSS 而无需触及视图封装。
CSS 伪类函数选择影子 DOM的影子宿主,其中包含它在内部使用的 CSS
父模板中的 Lib
<your-component class="custom-component-cls"></your-component>
父样式中的 Lib 样式
:host{
::ng-deep .custom-component-cls{
color: white;
}
}
推荐阅读
- wpf - 索引 ArgumentOutOfRangeException 当 DataGrid 在添加项目后刷新自身时
- javascript - 在 jquery-ui 自动完成上设置自定义输入字段值
- kubernetes-ingress - 如何使入口 nginx 在每个请求上返回 200
- python-3.x - 使用 boto3 从 AWS S3 存储桶下载 - 时间戳格式不正确
- symfony - symfony:无法运行功能测试
- python - 从 Keras 模型进行预测
- c# - C# UWP OpenWeatherAPI 使用 mvvm
- xamarin - Xamarin 表单:在归档 Android 应用程序后从 Xamarin 表单发布时,API 始终接收空数据
- node.js - 当有人提到频道时,它在 json 文件中的写入像这样 <#544554646> 我只想成为 id 而不是 <#>
- c# - 如何根据值更改视图输出?