我刚刚开始使用NativeScript,并正在完成教程:https://docs.nativescript.org/angular/tutorial/ng-chapter-3
即使指定moduleId,NativeScript也无法在与我的组件相同的目录中找到css文件。
// login.component.ts
@Component({
moduleId: module.id,
styleUrls: [
'./login-common.css',
'./login.android.css',
],
templateUrl: './login.html',
})
export class LoginComponent implements OnDestroy { ... }
我的目录结构是:
/app
/pages
/login
login.android.css
login-common.css
login.component.ts
login.html
我已经从模拟器中擦除了用户数据,停止/重新启动了应用程序,对文件名称进行了四重检查,但我仍然得到:
刷新应用程序... JS:ns-renderer:ERROR BOOTSTRAPPING ANGULAR JS:ns-renderer:File /data/data/org.nativescript.Groceries/files/app/pages/login/.login.android.css不存在。解析自:/data/data/org.nativescript.Groceries/files/app/pages/login/.login.android.css。
我也尝试不指定moduleId
值和使用相对于/app
的路径,我得到相同的错误。没有其他组件使用这些文件。我究竟做错了什么?
更新:
我已经制作了另一个组件,并且能够成功导入与组件相关的样式表。是否需要清除某种构建缓存?
当tns
运行时实际构建您的应用程序时,它将重新编写与平台相关的文件。
这意味着什么.android
将成为根.ts/.css/.html
文件。
login.android.css
成为login.css
iOS相关文件也是如此。这允许您只导入通用文件,它将智能地过滤掉运行时的正确文件。
在您的示例中,只需导入login.css
而不是列出的两个样式表。在login-android.css
文件中,导入login-common.css
文件。
编辑:
关于moduleId
,我总是建议应用你的组件。它使路径相对于当前文件夹。因此,如果你添加它,它将使'./
导入相对于你的login
组件的文件夹。