我在移动应用程序中有一个数据列表,对于每个数据,我可以拥有不同的firebase配置文件。 要求是,当我单击任何数据时,它将向我们的服务器发出请求,并从此处拉出Firebase配置。
该配置可用于移动应用后,它将使用此配置与Firebase连接,然后检索数据并执行一些操作。
有可能实现这一目标吗?
或更具体地说,我可以在我的构造函数中或mycomponent.component.ts中的ngOnInit()中执行AngularFireModule.initializeApp(environment),而不是在myModuleName.Module.ts中进行此操作。
答案 0 :(得分:2)
通过执行AngularFireModule.initializeApp(environment)
,您可以做两件事:
因此,您至少需要将导入零件保留在模块中。也许您可以检查Firebase模块在导入后是否允许初始化,这意味着:
如果这不可能,我建议延迟加载您的firebase模块: https://angular.io/guide/lazy-loading-ngmodules
Nb:由于您需要初始化firebase模块,因此可能需要将Firebase模块包装在标准模块中。
答案 1 :(得分:0)
这就是我的完成方式。我没有在应用程序模块中使用它,而是将它专门用于需要它的模块。
在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环境信息的服务。