Зависимости Инъекция угловая 4: мой сервис не единственный
Мне трудно использовать пакет аутентификации openId с этим конфигом....
У меня есть 3 модуля:
модуль 1: mainApplication модуль 2: основной модуль 3: портал
У меня есть служба (AuthService) в основном модуле, расширяющая OAuthService из angular-oauth2-oidc.
Это просто способ изолировать зависимость от angular-oauth2-oidc.
Модуль mainApplication загружает портал и основной сервис.
@NgModule({
declarations: [
],
entryComponents: [
],
imports: [
CommonModule,
IsocialCoreModule.forRoot(),
IsocialPortalModule.forRoot(portalConfig),
])}
export class MyMainApp {}
Мой порталМодуль:
imports: [
MyCoreModule,
],
})
export class MyPortalModule {
static forRoot(config: PortalConfig): ModuleWithProviders {
return {
ngModule: PortalModule,
providers: [ConfigService,
{provide: PortalConfigToken, useValue: config},
AuthService// --> Error if not added]
};
}
}
Мой основной модуль:
@NgModule({
imports: [
HttpModule,
OAuthModule.forRoot()
],
declarations: [],
})
export class MyCoreModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: MyCoreModule,
providers: [BasicGuardService, AuthService // Error if not added]
};
}
}
Мой конфиг-сервис:
constructor(@Inject(PortalConfigToken) private portalConfig: PortalConfig, private authService: AuthService) {
this.config = this.portalConfig;
this.authService.configure(this.portalConfig.authConfig);
}
Кажется, что AuthService является экземпляром более одного раза...
И я потерял конфигурацию между моментом, когда я настраиваю сервис, и моментом, когда я его использую.
1 ответ
Добавить услугу (в провайдеров) ТОЛЬКО в "Основное приложение". Таким образом, импортированные модули в "Основном приложении" используют один и тот же сервис