我在我的项目中使用了ngrx-store和Angular 6。不幸的是,我无法通过stackblitz复制问题,但是我将描述我的问题。我在组件中使用了Service1
,在Service2
中使用了Service1
。 Service1
的默认属性很少,我要在其中的构造函数之前分配。因此,在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.items
在service1
中创建了自己的新实例。我希望应该早些时候在service2
(ngOnInit
)中传递数据。
您可以在stackbltiz链接服务中看到someData
。
我做错了什么?
答案 0 :(得分:0)
最后,我找到了问题所在。我的Service1位于单独的模块中。在这个模块中,我有providers: [Service1]
。因此,该服务创建了两次而不是一次。因此,从提供商声明中删除即可解决问题