2016-08-10 1 views
1

benutzen ich, indem er erklärt es als viewInjectors in meinem @Component wie diese Dienstinstanz zu teilen:Teile eines Service-Instanz in Schräg 2 RC5

@Component({ 
    selector: 'my-sel', 
    viewInjectors: [SharedService], 
    templateUrl: 'template.html', 
    pipes: [MyPipe] 
}) 

Diese Lösung nicht mehr in Angular 2 RC5 funktioniert. Irgendwelche Gedanken?

+0

Ich denke, Sie meinen 'viewProviders'? –

+0

Wo möchten Sie es teilen? Die ganze Anwendung oder die Nachkommen? –

+0

@ GünterZöchbauer 'viewProviders' erstellen mehrere Instanzen ... Ich möchte es unter mehreren' Komponenten' innerhalb der gesamten App teilen – ncohen

Antwort

6

Wenn Sie einen Service für Ihre Anwendung oder Ihr Modul freigeben möchten, müssen Sie dies beim Bootstrapping der Anwendung oder bei der Definition Ihres Moduls deklarieren.

bootstrap(AppComponent, [ SharedService ]); 

oder

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    providers: [SharedService], // <---- 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

Vergessen Sie nicht, den Dienst von providers Attribute Ihrer Komponenten zu entfernen ...

+0

Sieht gut aus! Muss ich den Dienst in meine Komponenten importieren? – ncohen

+0

In der Tat, nein wegen der hierarchischen Injektoren. Wenn du das tust, wird die Single auf der Ebene der Komponente sein und nicht darüber (Anwendung oder Modul) ... Das meint Günter mit "einer Instanz pro Provider". Du musst auf dieser Ebene sehr vorsichtig sein ;-) –