Javascript 由于将服务注入服务中而导致意外结果6

Javascript 由于将服务注入服务中而导致意外结果6,javascript,angular,ngrx,angular6,Javascript,Angular,Ngrx,Angular6,我在我的项目中使用ngrx商店和Angular 6。不幸的是,我无法重现我的问题,但我将描述我的问题。我有组件中使用的Service1,还有Service2,在Service1中使用服务1在contstructor之前分配的默认属性很少。因此,在我的ngOnInit组件中,我制作: ngOnInit() { this.service1.init(someData); } 在此之后,我将: @Effect({ dispatch: false }) addItem$ = th

我在我的项目中使用ngrx商店和Angular 6。不幸的是,我无法重现我的问题,但我将描述我的问题。我有组件中使用的
Service1
,还有
Service2
,在
Service1
中使用<代码>服务1在contstructor之前分配的默认属性很少。因此,在我的
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
它在
service1
中,因为我是通过DI将它注入那里的,但是
this.service2.service1.items
是空数组。似乎
service1
service2
中创建了自己的新实例。我希望在前面的
ngOnInit
someData
)中应该有我传递的数据。 正如您在stackbltiz链接中所看到的,服务在“根目录”中提供


我做错了什么?

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

如果您不能在stackblitz上复制它,那么您可能可以创建最小复制并提供到github项目的链接?