AngularFire теперь поддерживает гораздо больше объектов конфигурации через Injection, поэтому он ожидает больше аргументов.В настоящее время требуется:
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 },
...
],
...
})
Тогда вы можете просто положиться на Dependency Injection, чтобы получить AngularFireDatabaseAlpha
и AngularFireDatabaseBeta
в свой компонент.