2016-03-02 3 views
1

У меня есть компонент , В, С и обслуживание S.Как ввести различный токен службы в одном компоненте?

и В изменить значение в службе S.

Компонент C которые дважды используется в разных местах сайта, поэтому он должен прочитать другое значение от службы S.

В двух компонентах C, я хочу использовать токен tokenFromA, другой использует tokenFromB.

Как ввести различный токен службы в том же компоненте? Благодаря

// Сервис S

export class Service { 
    text:string = ''; 
} 

// компонент C

@Component({ 
    selector: 'c-component', 
    providers: [provide("tokenFromA", {useClass: Service})], 
    template: ` 
     <h1>App</h1> 
    ` 
}) 
export class ComponentC { 
    constructor(@Inject('tokenFromA') service:Service) { 
    } 
} 
+1

Что вы имеете в виду под «динамически»? –

+0

@ GünterZöchbauer Я имею в виду, что в какой-то момент я хочу ввести 'bar2' не' bar' –

+0

Где и что такое «в какой-то момент»? В разное время в одном экземпляре приложения или разном для разработки и развертывания, ...? –

ответ

1

Насколько я знаю, это поддерживается только для испытаний на overrideProviders() в TestComponentBuilder.

Также можно запросить экземпляры непосредственно

constructor(private _injector:Injector) { 
    var bar = _injector.get('bar'); 
    var bar2 = _injector.get('bar2'); 
} 
Смежные вопросы