将服务注入服务Angular 6导致意外结果

时间:2018-07-06 15:41:20

标签: javascript angular ngrx angular6

我在我的项目中使用了ngrx-store和Angular 6。不幸的是,我无法通过stackblitz复制问题,但是我将描述我的问题。我在组件中使用了Service1,在Service2中使用了Service1Service1的默认属性很少,我要在其中的构造函数之前分配。因此,在ngOnInit的组件中,我做了:

ngOnInit() {
  this.service1.init(someData);
}

此后,我做出了这样的决定:

 @Effect({
    dispatch: false
  })
  addItem$ = this.actions$.pipe(
    ofType(fromReducers.AddItem),
    map((action: AddItem) => action.payload),
    tap(item=> *debugger* this.service2.addItemToService1(item))
  );

问题在于,如果我查看this.service2,在 debugger 点,它在service1内部,因为我是通过DI将其注入其中的,但是{{1} }是空数组。似乎this.service2.service1.itemsservice1中创建了自己的新实例。我希望应该早些时候在service2ngOnInit)中传递数据。 您可以在stackbltiz链接服务中看到someData

我做错了什么?

1 个答案:

答案 0 :(得分:0)

最后,我找到了问题所在。我的Service1位于单独的模块中。在这个模块中,我有providers: [Service1]。因此,该服务创建了两次而不是一次。因此,从提供商声明中删除即可解决问题