2017-05-23 1 views
0

J'ai DrawingDataService qui contient un tableau de mes données et différents outils pour dessiner ces données. Je veux utiliser DrawingDataService comme singleton dans tous mes outils.Impossible d'obtenir l'injecteur dans l'angle 2

Je mis DrawingDataService dans la liste des fournisseurs AppModule (pour faire comme instance singleton):

@NgModule({ 
declarations: [ 
    AppComponent 
], 
imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule 
], 
providers: [ 
    DrawingDataService 
], 
bootstrap: [AppComponent] 
}) 
export class AppModule { } 

Puis-je ajouter injecteur dans mon outil:

export class LineTool extends BaseTool { 

constructor(private injector: Injector) { 

    super(); 

    let drawingDataService2 = this.injector.get(DrawingDataService); 

Et il me dit que this.injector est nulle . Est-ce une bonne pratique de faire un service singleton pour stocker des données?

+2

L'exemple fait défaut. Injecteur ne peut pas être nul sans raison. Il devrait y avoir des erreurs. La classe n'a pas de décorateur @Injectable(), n'est-ce pas? Si c'est un fournisseur, où est-il ajouté au module? Oui, c'est une bonne pratique. Et non, il n'y a aucune raison de le faire avec injector.get. Juste injecter le service. – estus

+0

Je reçois la même erreur même si j'ai '@Injectable()' sur ma classe. – papaiatis

Répondre

0

Essayez de le faire de la manière suivante:

constuctor(private drawingDataService: DrawingDataService) 

Et vous pouvez l'utiliser de la manière suivante:

this.drawingDataService.someMethod()