【发布时间】:2019-08-29 23:45:26
【问题描述】:
我正在使用 Angular 构建一个 NativeScript 应用程序,并且我正在尝试实现主题切换,但我无法让它与 Webpack 捆绑一起使用。
我的版本:
- 角
7.2.12 - Nativescript-angular
7.2.3 - Nativescript 主题
2.0.0 - 打字稿
3.2.2
我按照教程在 Angular 项目中实现该功能:here 和 here。但这些适用于非 webpack(没有 --bundle 标志)构建。使用捆绑标志(以及更改 described here),切换不再起作用,并且每个切换都会引发错误:
JS: ~/assets/themes/dark.scss
JS: Error: Css styling failed: Error: undefined:1:26: missing '{'
主题文件(位于~/assets/themes/dark.scss)
ActionBar {
background-color: #B20000;
color: #FFFFFF;
}
.btn-primary {
background-color: #B20000;
color: #000000;
}
函数applyThemeCss() 应该从项目中提取样式,但这不是因为错误。
测试项目可以在here, on StackBlitz 找到(我没有使用 Nativescript 游乐场,因为它没有 package.json 和 assets 文件夹)
【问题讨论】:
-
您不能直接更新
package.json,但您仍然可以在Playground 中安装插件,使用左上角的+(加号)图标并选择Add NPM Package。并且应用主题方法需要一个 CSS 文件而不是 SCSS,请确保您的 webpack 在编译时选择它。 -
嘿@Manoj,感谢您的回复!使用 package.json 我没有地方可以添加我正在使用的脚本 (
tns run android --bundle)。另外,nativescript-themes 插件文档里面有一个 scss 文件,文档错了吗? (var cssText = require('~/assets/themes/dark.scss');) -
我很肯定 SCSS 可能无法正常工作,但文件扩展名本身并不重要,只要它里面只有 CSS,这就是你的情况。如果您喜欢使用 SCSS 语法,则应将其预编译为 CSS。我怀疑您的
dark.scss文件未包含在捆绑包中,但无法确定是否没有示例项目来重现该问题。 -
@Manoj,我在帖子中添加了一个项目来重现问题
标签: angular typescript sass nativescript nativescript-angular