我使用angular 6,我们可以创建除默认app.module之外的多个应用程序和库。我想使用一个应用程序变量,如url前缀或缓存到期时间,可以在所有库和应用程序中使用。但是当我在environment.ts中声明一个变量时,我只能在它的src文件夹的根目录中引用它。因为我想引用这个变量的其他项目没有在它的根目录中创建,所以它在运行时抛出错误,说它无法访问未在其根目录中声明的文件夹中的变量。
请您建议一些可以帮助我在所有应用程序中访问应用程序变量的内容。
答案 0 :(得分:0)
我终于找到了解决方案。
我在根级别创建了一个文件夹Config并添加了一个文件environment.ts。 我将环境变量从src / app / environment / environment.ts复制到Config / environment.ts中,但具有不同的值。
EG。在src / app / environment / environment.ts中 我添加了一个变量setTimeout = 3000
export const environment = {
production: false,
setTimout=3000
};
并在Config / environment.ts中设置setTimeout = 13000
export const environment = {
production: false,
setTimout=13000
};
在app.component.ts中的我使用了这个setTimeout变量。
constructor(){
console.log("timeout is "+environment.setTimeout);
}
我在dev env中运行它,它安慰了3000。
现在我替换了angular.json
中的folowwing线"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
]
带
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "Config/environment.ts"
}
]
然后我运行 ng服务[MyAppName] --prod 。
然后转到dist / myapp文件夹并运行lite-server以在本地部署和运行app。 我的config / environment.ts中的setTimeout值替换了环境/ environment.ts文件中app.component.ts中开发期间使用的值。它安慰了13000.
因此,通过这种方式,我可以创建一个类似文件夹的配置,并在任何库或应用程序中使用它。