2016-01-20 8 views
4

Возможно ли выполнить сервис в угловом 2 при запуске? bootstrap не выполняет конструктор службы. А также инжектор выполняет конструктор службы каждый раз, когда есть инъекция услуги в какой-либо компонент. есть ли способ сделать сервис singelton и убедиться, что ctor будет работать только один раз?Угловой 2 запуск службы

ответ

2

Добавить услугу только для начальной загрузки, а не для выдержек в ваших компонентах. Если вы добавите его в свой AppComponent, он будет создан и только один раз.

Добавление службы поставщикам в компонент создает новый экземпляр для каждого экземпляра компонента.

+0

Спасибо! но есть ли способ создать экземпляр службы, не вводя ее в какой-либо компонент? Только с помощью бутстрапа? –

+1

Я думаю, что это должно работать с или без ввода: 'bootstrap (AppComponent, [предоставлять (MyService, useValue: new MyService())])' –

1

Bootstrap не запускает сервис, потребительский класс, который вводит услугу. Перечислив его в бутстрапе, вы получите синглтон.

Если вы следуете за соглашением о перечислении своих инъекционных услуг (LogRepository) в бутстрап, то все службы будут одноточечными. (Как в LogRepository) bootstrap(TheApp, [HTTP_PROVIDERS,LogRepository]);

Вы можете получить больше экземпляров инъекционных услуг, если вы укажете их как поставщиков на компоненте, но начинаете, просто перечислите их в bootstrap(). Тогда все синглтон.

+0

где я могу поместить 'bootstrap (App, [..])' в угловую 4? – fsi

Смежные вопросы