AngularFire 现在通过注入支持更多的配置对象,这就是为什么它需要更多的参数。目前需要:
constructor(
@Inject(FirebaseOptionsToken) options:FirebaseOptions,
@Optional() @Inject(FirebaseNameOrConfigToken) nameOrConfig:string|FirebaseAppConfig|undefined,
@Optional() @Inject(RealtimeDatabaseURL) databaseURL:string,
@Inject(PLATFORM_ID) platformId: Object,
zone: NgZone
)
虽然现在我们支持依赖注入,但我不建议像支持多个应用程序那样直接初始化。我们有一个未解决的问题来记录这一点但你现在可以注入不同的FirebaseOptions
通过FirebaseOptionsToken
到不同的组件中,如果您需要在同一组件中使用多个数据库,请使用如下所示:
@Injectable()
export class AngularFireDatabaseAlpha extends AngularFireDatabase { }
@Injectable()
export class AngularFireDatabaseBeta extends AngularFireDatabase { }
export function AngularFireDatabaseAlphaFactory(platformId: Object, zone: NgZone): Project1AngularFireAuth {
return new AngularFireDatabaseAlpha(environment.firebase[0], 'alpha', undefined, platformId, zone)
}
export function AngularFireDatabaseBetaFactory(platformId: Object, zone: NgZone): Project2AngularFireAuth {
return new AngularFireDatabaseBeta(environment.firebase[1], 'beta', undefined, platformId, zone)
}
@NgModule({
...,
providers: [
...,
{ provide: AngularFireDatabaseAlpha, deps: [PLATFORM_ID, NgZone], useFactory: AngularFireDatabaseAlphaFactory },
{ provide: AngularFireDatabaseBeta, deps: [PLATFORM_ID, NgZone], useFactory: AngularFireDatabaseBetaFactory },
...
],
...
})
然后你就可以依靠依赖注入来获得AngularFireDatabaseAlpha
and AngularFireDatabaseBeta
到你的组件中。