2017-04-21 45 views
1

似乎每个组件创建自己的[a]服务实例。我不明白为什么。如何避免角飞镖中的服务的多个实例

我注意到这个AngularJs 2 - multiple instance of service created,但我不是正确的解决方案清楚。难道我在主创建服务实例_myService

void main() { 
    bootstrap(AppComponent,[MyService]); 
} 

,然后将其复制到[儿童]成分(因为我也从组件供应商删除MyService)?这看起来不正确,因为组件在实例化之前引用_myService,我必须检查它是否为空。

感谢

史蒂夫

回答

1

可以使用工厂模式的构造像here

0

创建的引导您的服务将确保没有对应用程序的它只有一个实例(如果你没有在某些组件再次提供的话)。

你得到它只有当你在一些@Component提供多个副本 - 组件(及其所有子)的每个实例届时将有服务的一个单独的实例。

+0

“在引导程序中创建服务将确保应用程序只有一个实例。” - 但事实并非如此。我有几个实例。所以,如果我从组件提供程序中删除MyService,组件如何从引导程序访问实例?谢谢,s – Lymp

+0

DI与Angular中的DOM树紧密相关 - 如果您在应用程序级别提供某些内容,则任何组件都可以注入它。 – rkj