2017-01-04 5 views
4

Gibt es eine Möglichkeit, eine Instanz eines injizierbaren Service von Winkel 2 nur durch den Service-Namen zu bekommen?Angular 2 erhalten Service von String-Name

zum Beispiel in Angular 1 könnten Sie schreiben:

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

und der service Variable würde eine Instanz des Service.

Ich würde wirklich Ihre Hilfe Jungs schätzen!

Antwort

7

Wenn Sie es mit Namen zur Verfügung stellen, können Sie es mit Namen injizieren

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

Sie können Explicit injector creation verwenden, um die Verwendung von Injector Class

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

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