Я изо всех сил пытаюсь использовать экземпляр firebase как в библиотеке, так и в приложении, которое его использует.Я пробовал разные подходы, но до сих пор я борюсь с такого рода конфигурацией.
import { ModuleWithProviders, NgModule, LOCALE_ID } from "@angular/core";
import { HTTP_INTERCEPTORS, HttpClient } from "@angular/common/http";
import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
import { RouterModule } from "@angular/router";
import { CommonModule, registerLocaleData } from "@angular/common";
import localeUk from "@angular/common/locales/uk";
registerLocaleData(localeUk);
import { TranslateLoader, TranslateModule } from "@ngx-translate/core";
import { LoggingInterceptor } from "./logging.interceptor";
import { NotFoundComponent } from "./not-found/not-found.component";
import { SidebarComponent } from "./sidebar/sidebar.component";
import { AuthService } from "./auth.service";
import { DatesService } from "./dates.service";
import { LocalizationService } from "./localization.service";
import { CalculationsService } from "./calculations/calculations.service";
import { NavService } from "./nav.service";
import { SigninComponent } from "./auth/signin/signin.component";
import { ChangePassComponent } from "./auth/change-pass/change-pass.component";
import { AntiAuthGuard } from "./auth/antiAuth.guard";
import {
AuthGuard,
AutoAuthRoleCredential,
AUTO_AUTH_ROLE_CREDENTIALS
} from "./auth.guard";
import { FormsModule } from "@angular/forms";
import { HttpLoaderFactory } from "./HttpLoaderFactory";
import { UIModule } from "./ui/ui.module";
import { AngularFireModule, FirebaseAppConfig } from "@angular/fire";
import { AngularFireAuth } from "@angular/fire/auth";
import { AngularFirestore } from "@angular/fire/firestore";
export interface TCoreModuleConfig {
autoAuthRoleCredentials: AutoAuthRoleCredential[];
firebaseConfig: FirebaseAppConfig;
}
// @dynamic
@NgModule({})
export class TCoreModule {
static forRoot(config: TCoreModuleConfig): ModuleWithProviders {
@NgModule({
imports: [
CommonModule,
RouterModule,
FormsModule,
AngularFireModule.initializeApp(config.firebaseConfig),
CommonModule,
RouterModule,
FormsModule,
NgbModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
],
providers: [AngularFirestore, AngularFireAuth],
declarations: [
NotFoundComponent,
SidebarComponent,
SigninComponent,
ChangePassComponent
],
exports: [
SidebarComponent,
NotFoundComponent,
SigninComponent,
ChangePassComponent
]
})
class TCoreInnerModule {}
return {
ngModule: TCoreInnerModule,
providers: [
AuthService,
CalculationsService,
DatesService,
LocalizationService,
NavService,
AntiAuthGuard,
AuthGuard,
{
provide: AUTO_AUTH_ROLE_CREDENTIALS,
useValue: config.autoAuthRoleCredentials
},
{
provide: HTTP_INTERCEPTORS,
useClass: LoggingInterceptor,
multi: true
},
{
provide: LOCALE_ID,
deps: [LocalizationService],
useFactory: localizationService =>
localizationService.getLocale()
}
]
};
}
static forChild(config: TCoreModuleConfig): ModuleWithProviders {
return this.forRoot(config);
}
}
Я получаю такую ошибку, когда пытаюсь построить с такой конфигурацией:
Cannot determine the module for class SidebarComponent in /Users/yosyf/Code/TA/t-plugins/projects/t-core/src/lib/sidebar/sidebar.component.ts! Add SidebarComponent to the NgModule to fix it.
И то же самое со всеми другими компонентами.Я пробовал разные подходы, экспортируя компоненты из модуля верхнего уровня, а не только из внутреннего модуля, который тоже не сработал.