似乎每个组件都创建了自己的[a]服务实例。我不明白为什么。
我注意到这个AngularJs 2 - multiple instance of service created,但我不清楚正确的解决方案。我是否在main中创建了服务实例_myService
:
void main() {
bootstrap(AppComponent,[MyService]);
}
然后将其复制到[child]组件(因为我还从组件提供程序中删除了MyService
)?这似乎不正确,因为组件在实例化之前引用_myService
,我必须检查它是否为空。
由于
史蒂夫
答案 0 :(得分:1)
您可以使用工厂构造函数模式,如here。
答案 1 :(得分:0)
在引导程序中创建服务将确保应用程序只有一个实例(如果您不在某个组件中再次提供它)。
只有在某个@Component中提供它时,才能获得它的多个副本 - 然后组件的每个实例(及其所有子代)都将拥有一个单独的服务实例。