2017-09-25 1 views
0

j'ai du mal à utiliser un paquet d'authentification OpenID avec cette configuration ....Injection angulaire 4 Dépendances: mon service pas un singleton

j'ai 3 modules:

modules

1: mainApplication Module 2: core module 3: portal

J'ai un service (AuthService) dans le module de base, étendant OAuthService de angular-oauth2-oidc.

C'est juste un moyen d'isoler la dépent d'angular-oauth2-oidc.

Le module mainApplication charge le service principal du portail &.

@NgModule({ 
    declarations: [ 
    ], 
    entryComponents: [ 
    ], 
    imports: [ 
    CommonModule, 
    IsocialCoreModule.forRoot(), 
    IsocialPortalModule.forRoot(portalConfig), 
    ])} 
    export class MyMainApp {} 

Mon portalModule:

imports: [ 
    MyCoreModule, 
    ], 
}) 
export class MyPortalModule { 
    static forRoot(config: PortalConfig): ModuleWithProviders { 
    return { 
     ngModule: PortalModule, 
     providers: [ConfigService, 
       {provide: PortalConfigToken, useValue: config}, 
       AuthService// --> Error if not added] 
    }; 
    } 
} 

Mon coreModule:

@NgModule({ 
    imports: [ 
    HttpModule, 
    OAuthModule.forRoot() 
    ], 
    declarations: [], 
}) 
export class MyCoreModule { 
    static forRoot(): ModuleWithProviders { 
    return { 
     ngModule: MyCoreModule, 
     providers: [BasicGuardService, AuthService // Error if not added] 
    }; 
    } 
} 

Mon service de configuration:

constructor(@Inject(PortalConfigToken) private portalConfig: PortalConfig, private authService: AuthService) { 
    this.config = this.portalConfig; 
    this.authService.configure(this.portalConfig.authConfig); 
    } 

Il semble que le AuthService est instancie plus d'une fois. ..

Et j'ai perdu la config entre le moment où je configure le service et le moment où je l'utilise.

Répondre

0

ajouter le service (dans les fournisseurs) SEULEMENT dans la "Application principale". Ainsi, les modules importés dans "Main Application" partagent le même service

+0

Je l'ai essayé. Mais en faisant cela, j'ai une exception disant que le fournisseur n'est pas défini. – bokzor

+0

Erreur ERREUR: Aucun fournisseur pour AuthService! Je dois l'ajouter en tant que dépendance dans Core, Portal & MainApp – bokzor

+0

Désolé, je suis un peu novice dans Angular4. Je pensais que si vous utilisez mainApplication, @NgModule ({déclarations: [..], importations [..], fournisseurs [AuthService] ..)} vous devez seulement importer l'AuthService dans le composant dont vous avez besoin – Eliseo