css - 是否可以在 scss 中使用来自 Angular 服务的样式?
问题描述
我有一个 change-color.service.ts 具有以下内容:
public defaultStyles = {
firstDesignBackgroundColor: '#a31329',
firstDesignFontColor: '#ffffff',
secondDesignBackgroundColor: '#d1cfcfff',
secondDesignFontColor: '#000000'
};
现在我想在我的 style.scss 中添加声明
:host ::ng-deep th span#optimize-checkbox-header .mat-checkbox label.mat-checkbox-layout .mat-checkbox-inner-container.mat-checkbox-inner-container-no-side-margin .mat-checkbox-frame {
border: 2px solid #fff !important;
}
将替换#fff
为。你知道我如何创建这个依赖吗?这可能吗?firstDesignFontColor
change-service
解决方案
实际上有一种方法可以使用 css 变量来实现它,我将在此处发布作为第二个答案。
您可以从 JavaScript 代码更改 css 变量,因此如果您使用类的变量,如这个简化的示例:
:root {
--bg-color: red;
}
.test {
background-color: var(--bg-color);
}
然后你可以从你的 ChangeColorService 中改变它
interface Colors {
background: string;
}
@Injectable()
export class ChangeColorService {
colors$ = new BehaviorSubject<Colors>({ background: 'red' });
constructor(@Inject(DOCUMENT) private document: Document) { }
change(colors: Colors) {
const root = this.document.documentElement;
root.style.setProperty('--bg-color', colors.background);
this.colors$.next(colors);
}
}
完整示例: https ://stackblitz.com/edit/angular-change-css-variable?file=src/app/app.component.ts
推荐阅读
- plantuml - 矩形后回车
- ruby-on-rails - Rails 发电机没有为引擎加载
- laravel - laravel php artisan serve 命令有效,但 localhost url 在 ubuntu 18.10 中不起作用
- drupal - 提交按钮未启用
- python - 比较 pandas Df 中的每一行值元素并根据比较输入一个字符串
- r - 了解“优化”功能
- python - Pycharm:Java网关进程在发送其端口号之前退出
- .htaccess - 代码片段说明,.htaccess 中的图像服务
- swift - 您如何以简洁易读的方式顺序链接可观察对象
- python - 调用 fcntl.lockf() 中的管道(“按位或”)