angular - 使用动态配置设置来初始化 AngularFireModule
问题描述
获得 angularfire ( https://github.com/angular/angularfire ) 的第一次体验目前我正在尝试动态解析初始化的配置属性,以便在我们所有的环境中使用我们的应用程序的相同构建版本(开发,非生产, ...)。
为此,我正在使用环境预加载器...
import { environment } from './environments/environment';
import { environmentLoader } from './environments/environment-loader';
...
/**
* Loads the environment available in the assets folder. This enables dynamic configuration for Docker images.
*/
export const environmentLoader = new Promise<any>((resolve, reject) => {
const xmlhttp = new XMLHttpRequest();
const url = './assets/environments/environment.json';
xmlhttp.open('GET', url, true);
xmlhttp.onload = () => {
if (xmlhttp.status === 200) {
resolve(JSON.parse(xmlhttp.responseText));
} else {
console.warn('Default env is used!');
resolve(defaultEnvironment);
}
};
xmlhttp.send();
});
...在我的 main.ts ...
...
environmentLoader.then((env) => {
/**
* Replaces the environment values with the assets environment.json data.
*/
Object.assign(environment, env);
...
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch((err) => console.error(err));
});
如您所见,预加载器确实将用于开发的本地 environment.ts 的内容与其他环境的特定变体进行了切换。使用这种技术,可以在应用程序中使用每个环境的相应设置,而无需重新构建。
除了在 app.module.ts 中初始化 AngularFireModule 之外,所有这些都非常顺利。为此,似乎必须在根模块的导入部分中初始化模块,如下所示......
...
import { environment } from 'src/environments/environment';
...
AngularFireModule.initializeApp(environment.firebase);
...
然而,在预加载器执行之后,引导是链接的,这个初始化似乎是异步执行的。结果,AngularFireModule 总是使用本地环境属性进行初始化,并且不考虑环境变化(使用 APP_INITIALIZER 令牌来延迟引导并等待环境预加载 - 就像我在类似情况下与某些提供商一起工作时所做的那样- 似乎也不是一个选择)。
问题:
- 有没有办法以另一种方式推迟应用程序模块的引导?
- 有没有办法推迟对 AngularFireModule 的 initializeApp 方法的调用或以完全不同的方式初始化模块?
- 有没有办法在执行角度引导程序之前同步加载 JSON 文件?
感谢您的任何建议,亲切的问候
解决方案
推荐阅读
- mysql - Kerberos 身份验证 - AWS RDS - 错误 ERROR 2059 (HY000):无法加载身份验证插件“对话框”
- c# - 如何在winform c#的rdlc报告查看器中显示印地语字符
- video-streaming - 将视频从 NAT 后面的摄像机流式传输到公共访问服务器
- html - 如何从嵌入 html 的 youtube 视频中删除稍后观看、分享和订阅选项
- c++ - 更改缓冲区或循环时 Xaudio2 弹出声音
- java - Maven 安装的运行时为 JRE 而不是 JDK
- python - 标准化图像是否被视为数据增强?
- c++ - 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- python - 结合特征和标签为 model.fit 正确生成 tf 数据集(使用 tf.data.Dataset.from_tensor_slices)
- android - 离子电容器android gradle同步失败问题