2017-06-07 3 views
1

Ich erstelle einen Dienst und ich möchte die Daten in diesem Service zu teilen, so fand ich in einigen Tutorial, dass ich den Dienst in der Anwendung meiner Anwendung bootstrap, um sicherzustellen, dass es nur eine ist Instanz dieses Service:bootstraping service in eckig für globals verwendet

@NgModule({ 
    declarations: [ 
    AppComponent, 
    ProfileComponent, 
    TestComponent, 


    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    SlimLoadingBarModule.forRoot(), 
    FormWizardModule 

    ], 
    exports: [BrowserModule, SlimLoadingBarModule], 
    providers: [UserResolverService,SessionService, appRoutingProviders ], 
    bootstrap: [AppComponent,[SessionService]] 
}) 
export class AppModule { } 

ich die SessionService in der Bootstrap machen, aber ich habe einen Fehler in der Browser-Konsole:

das ist mein main.ts:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 
import { enableProdMode } from '@angular/core'; 
import { environment } from './environments/environment'; 
import { AppModule } from './app/app.module'; 

if (environment.production) { 
    enableProdMode(); 
} 

platformBrowserDynamic().bootstrapModule(AppModule); 

Antwort

0

Ich denke, Ihr Tutorial ist von einer Beta-Version.

weil vor der RC-Version, die Notation wie

bootstrap(AppComponent, [provide(SharedService, {useValue: sharedService})]); 

Jetzt war, wenn Sie einen Dienst global als Singleton zur Verfügung stellen möchten, alles, was Sie tun müssen, ist es in dem Anbieter-Array zu schaffen, in dem Stamm Modul.

@NgModule({ 
    declarations: [ 
    AppComponent, 
    ProfileComponent, 
    TestComponent, 


    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    SlimLoadingBarModule.forRoot(), 
    FormWizardModule 

    ], 
    exports: [BrowserModule, SlimLoadingBarModule], 
    providers: [UserResolverService, SessionService, appRoutingProviders ], 
    bootstrap: [AppComponent] //<---- remove it from here 
}) 
export class AppModule { } 
+0

Wie kann ich sicherstellen, dass ich nur eine Instanz habe? –

+0

@MOHAMMEDYASSINEChabli Wenn Sie diesen Dienst auf einer höheren Ebene als Ihre Komponente bereitstellen, handelt es sich um einen Singleton (eine Instanz). Überprüfen Sie: https://stackoverflow.com/questions/43997489/angular-shared-service-between-components-doesnt-work. Wenn Sie also diesen Service ** nur ** in Ihrem App-Modul bereitstellen, wird nur eine Instanz in Ihrer App vorhanden sein. – echonax