[英]Configure Firebase environment dynamically in Angular
我的移动应用程序中有一个数据列表,对于每个数据,我可以拥有不同的 Firebase 配置文件。 要求是,当我点击任何数据时,它会向我们的服务器发出请求并从那里提取 firebase 配置。
一旦配置可用于移动应用程序,它将使用此配置与 firebase 连接,然后检索数据并执行一些操作。
有可能实现这一目标吗?
或者更具体地说,我可以在我的构造函数中或在 mycomponent.component.ts 中的 ngOnInit() 中执行 AngularFireModule.initializeApp(environment) 而不是在 myModuleName.Module.ts 中执行它。
通过执行AngularFireModule.initializeApp(environment)
,您可以做两件事:
所以你至少需要在模块中保留导入部分。 也许您可以检查 firebase 模块是否允许在导入后进行初始化,这意味着:
如果这是不可能的,我建议延迟加载您的 firebase 模块: https : //angular.io/guide/lazy-loading-ngmodules
注意:由于您需要初始化 firebase 模块,您可能需要将 Firebase 模块包装在标准模块中。
这就是我完成它的方式。 我没有在 app 模块中使用它,而是专门将它用于需要它的模块。
在module.ts
import { AngularFirestoreModule } from 'angularfire2/firestore';
import { AngularFireDatabaseModule } from 'angularfire2/database';
@NgModule({
declarations: [
...
],
imports: [
...
AngularFirestoreModule,
AngularFireDatabaseModule],
exports: [
... ],
providers: [
...
]
})
在 component.ts
import { AngularFirestore } from 'angularfire2/firestore';
import { _firebaseAppFactory } from "angularfire2/firebase.app.module";
angFirestore: AngularFirestore
ngOnInit(){
this.angFirestore = new AngularFirestore(_firebaseAppFactory(environment.firebase, environment.localAppName.toString()), false);
}
ionViewWillUnload(){
this.clearFirebaseInfo();
if(this.angFirestore && this.angFirestore.app){
this.angFirestore.app.delete();
}
}
clearFirebaseInfo(){
environment.apiKey= "";
environment.authDomain= "";
environment.databaseURL= "";
environment.projectId= " ";
environment.storageBucket= "";
environment.messagingSenderId= "";
environment.appId= "";
}
以及设置 firebase 环境信息的服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.