Зависимости Инъекция угловая 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 ответ

Добавить услугу (в провайдеров) ТОЛЬКО в "Основное приложение". Таким образом, импортированные модули в "Основном приложении" используют один и тот же сервис

Другие вопросы по тегам