2017-01-04 1 views
4

Existe-t-il un moyen d'obtenir une instance d'un service injectable angulaire 2 simplement par le nom du service?Angular 2 get service par nom de chaîne

Par exemple, dans angulaire 1 vous pouvez écrire:

var service = $injector.get('ServiceName'); 

et la variable service obtiendriez une instance du service.

J'apprécierais vraiment votre aide les gars!

Répondre

7

Si vous fournissez par nom, vous pouvez l'injecter par nom

@NgModule({ 
    providers: [ 
     ServiceName, 
     {provide: 'ServiceName', useExisting: ServiceName} 
    ], 
    ... 
2

Vous pouvez utiliser Explicit injector creation en utilisant la Injector Class

injector = ReflectiveInjector.resolveAndCreate([ServiceClass, Dependency1Class, Dependency2Class]); 

let service= injector.get(ServiceClass); //pass the type not the name