1

我很难在这个配置中使用 openId auth 包......

我有 3 个模块:

模块 1:mainApplication 模块 2:核心模块 3:门户

我在核心模块中有一个服务(AuthService),从 angular-oauth2-oidc 扩展 OAuthService。

这只是一种将依赖项与 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 不止一次被实例化......

而且我在配置服务和使用它的那一刻之间丢失了配置。

4

1 回答 1

0

仅在“主应用程序”中添加服务(在提供程序中)。因此,“主应用程序”中的导入模块共享相同的服务

于 2017-09-25T15:33:28.210 回答