2017-01-04 9 views
4

Есть ли способ получить экземпляр инъекционной службы углового 2 просто по имени службы?Угловой 2 получить услугу по имени строки

Для примера, в угловых 1 можно было бы написать:

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

и переменная service бы получить экземпляр службы.

Я бы очень признателен вам за помощь!

ответ

7

Если вы предоставите его по имени, вы можете вводить его по имени

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

Вы можете использовать Explicit injector creation используя Injector Class

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

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