【发布时间】:2026-01-06 13:05:01
【问题描述】:
我正在尝试使用环境变量在 Angular 6 中动态更改样式。
我能做到,
这是我的文件结构的样子:
src
-app
-assets
-environments
-scss
-theme1.scss
-theme2.scss
-_variables.scss
-styles.scss
在我的 _variables.scss 中,我正在导入 theme1.scss 和 theme2.scss
在styles.scss中,我包含了_variables.scss
在 theme1.scss 和 theme2.scss 中,我将所有样式和变量都封装在一个类中。
例如:
.theme1{
$input-btn-focus-width:0;
$input-btn-focus-color:transparent;
$input-btn-focus-box-shadow:none;
$primary-color: #0378C5!default;
$primary-grad-start: #0269ad;
.logo {
width: 150px;
}
}
同样,theme2.scss 也会采用类似的方式。
在component.ts文件中,我将类名更改如下:
this.selectedTheme = environment.customer==""? "theme1": "theme2";
现在,问题是我必须用动态类包装每个组件。
例如:
<app-login [class]="selectedTheme"></app-login>
而且有这么多组件,我不想对每个组件都这样做。
有什么方法可以将这个 selectedTheme 动态添加到根元素,即 Angular 应用程序的主体,这样我就可以避免将类添加到每个组件中。
【问题讨论】:
-
在 Angular 6 中,在 angular.json 中,您可以使用“replacement”标签来替换两个文件(但它不是“在构建阶段的其他动态)。您可以使用 Shekhar 在 @ 987654321@
-
他的做法是添加一个 css 文件,但我无法使用 scss 文件,因为它没有被处理。
-
有多种方法可以做到这一点,但请让我看看我是否理解这一点。您有几个 CSS,每个 CSS 都有一组定义主题的样式。在您的代码中以某种方式您希望有可能在主题之间切换,但是您需要这样做只在一个地方应用“主题类”并且将应用到所有组件?
标签: javascript angular sass angular6