Javascript 由于将服务注入服务中而导致意外结果6
我在我的项目中使用ngrx商店和Angular 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
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项目的链接?