【发布时间】:2020-07-22 05:04:03
【问题描述】:
我需要从包含环境数据的服务中加载数据。我需要app.modules 中的模块的一些数据。
这是一个小的app.modules.ts 示例:
import { CustomEnvironmentService } from './CustomEnvironmentService';
let customService: CustomEnvironmentService;
@NgModule({
declarations: [...],
imports: [CustomModule.forRoot(customService.ENVIRONMENT_DATA)],
providers: [...]
})
export class AppModule {}
首先要注意的是customService.ENVIRONMENT_DATA 只是CustomEnvironmentService 中的一个公共变量,它从名为env.js 的环境配置文件中获取信息。
问题是应用加载时customService.ENVIRONMENT_DATA 未定义。这是可以理解的,因为我很确定服务没有初始化,也没有获取数据。
我发现了一个名为 APP_INITIALIZER 的东西,但我似乎无法使用它从 env.js 文件中读取,或者它会使用我的 CustomEnvironmentService(它从 env.js 获取数据)。
我的实现也是基于这篇文章:How to use environment variables to configure your Angular application without a rebuild
有什么想法吗?
【问题讨论】:
-
customService.ENVIRONMENT_DATA 类型的变量? CustomModule 真的是自定义模块还是 3rd 方模块?
-
您能否提供您的
CustomEnvironmentService的代码,这样会更容易理解发生了什么。这是不是 Angular 服务? -
我在这里寻找的是一个来自配置文件的 json obj,它被注入到
CustomModule.forRoot(jsonData)。 CustomModule 是需要 json 配置的真实模块的伪代码。我需要该 json 可以在环境之间进行配置。customService.ENVIRONMENT_DATA也是表示可能的服务实现的伪代码 - 它不一定是服务......它只需将数据加载到CustomModule.forRoot({injected data here or globally})。 -
到目前为止你尝试过什么?正如您所暗示的,使用
APP_INITIALIZER是我的建议。您的问题是询问如何从文件中加载 env 数据(您链接到的文章回答了该文件),但您不是在询问有关您面临的特定问题或有关您尝试过的任何细节的问题。 -
您的要求仍然不完全清楚。您的
CustomEnvironmentService是如何设置的?你对APP_INITIALIZER做了什么尝试?如果没有足够的信息来说明您目前正在做什么 - 这样我们就可以重现您遇到的问题 - 我们都只会在黑暗中刺伤。
标签: javascript angular configuration