在运行时设置 Angular 应用程序的样式

Styling an Angular app at runtime

在运行时设置 Angular 应用样式的最佳做法是什么? (p.e。用户特定的原色)该应用程序 运行 适用于不同的公司,每个公司都希望在应用程序设置中设置其公司设计颜色(免费,无预定义颜色代码)。

第一个想法: 使用 less-variables 并在运行时更改它。但是 Angular 将它们转换为静态 css.

第二个想法: 使用像这样的样式绑定:[style.color]=styleService.primaryColor 但是我必须在每个组件中实现它 -> 开销很大!

第三个想法: Angular 和 jQuery 不是好朋友,但有没有等价于 $('.primary-color').css({color=styleService.primaryColor})?

有没有更好的方法?也许是一个 Angular 兼容的框架,它可以操纵我的 CSS,所以我可以使用简单的 类 在 HTML 中进行装饰,以及应用用户特定样式值的中央服务?

我正在使用 SASS 所以我建议(如果你可以使用 sass)是使用全局 scss 变量文件,你可以在构建过程中更改它们(每个构建不同的颜色)。

// This is the global var .scss file

$primary-color: green;
$secondаry-color: yellow;
$error-color: red;

// This is your component scss
@import `${yourPath}/variables.scss`;

button {
  color: $primary-color
}

您可以做类似 this stackblitz 的事情:基本上,您创建一个指令,将其应用于将改变颜色的元素,并将用户颜色存储在某个地方(本地存储、数据库...)。

这样,您就可以控制 HTML 元素的许多属性。

我发现它比使用 SASS 更灵活,您可以通过它了解有关 Angular 的一两件事。