致电给AngularFireModule.initializeApp
没有做任何神奇的事情,它只是返回模块以及一些提供者:
export class AngularFireModule {
static initializeApp(config: FirebaseAppConfig, authConfig?: AuthConfiguration, appName?: string): ModuleWithProviders {
return {
ngModule: AngularFireModule,
providers: [
{ provide: FirebaseUserConfig, useValue: config },
{ provide: FirebaseConfig, useFactory: _getDefaultFirebase, deps: [FirebaseUserConfig] },
{ provide: FirebaseAuthConfig, useValue: authConfig },
{ provide: FirebaseAppName, useValue: appName }
]
}
}
}
请注意,Firebase 配置是使用FirebaseUserConfig
token.
中使用的一些令牌AngularFireModule.initializeApp
不是公开的,所以最好的方法是致电AngularFireModule.initializeApp
并从结果中过滤配置提供程序。然后可以在调用中使用配置提供程序platformBrowserDynamic
使用您动态获得的信息:
import {
AngularFireModule,
AuthMethods,
AuthProviders,
FirebaseUserConfig
} from "angularfire2";
// Call initializeApp, passing an empty config object:
const angularFireImport = AngularFireModule.initializeApp({}, {
method: AuthMethods.Password,
provider: AuthProviders.Password
});
// Filter the config from the providers:
angularFireImport.providers = angularFireImport.providers.filter(
(provider: any) => provider.provide !== FirebaseUserConfig
);
@NgModule({
bootstrap: [AppComponent],
imports: [
angularFireImport,
BrowserModule,
FormsModule
]
})
class AppModule {}
// Provide the Firebase config in the platformBrowserDynamic call:
function processConfigData(config, env) {
const firebaseConfig = {
apiKey: '<your-key from the dynamic config>',
authDomain: '<your-project-authdomain from the dynamic config>',
databaseURL: '<your-database-URL from the dynamic config>',
messagingSenderId: '<your-messaging-sender-id from the dynamic config>',
storageBucket: '<your-storage-bucket from the dynamic config>'
};
platformBrowserDynamic([
{ provide: "appConfig", useValue: config },
{ provide: "appEnv", useValue: env },
{ provide: FirebaseUserConfig, useValue: firebaseConfig }
]).bootstrapModule(AppModule);
}