我在我的项目中使用ngrx商店和角6。不幸的是,我无法重现我的问题stackblitz,但我将描述我的问题。我有在组件中使用的Service1,也有在Service1中使用的Service2。在构造函数之前,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,它在service1中有,因为我是通过DI注入它的,但是this.service2.service1.items是空数组。service1似乎在service2中创建了自己的新实例。我希望前面在ngOnInit (someData)中传递的数据。正如您在stackbltiz链接服务中看到的那样,providedIn: 'root'。
我做错什么了?
发布于 2018-07-09 11:18:06
最后,我发现了问题所在。我的Service1位于一个单独的模块中。在这个模块中,我有了providers: [Service1]。所以这个服务创建了两次而不是一次。因此从提供者声明中删除解决了这个问题。
https://stackoverflow.com/questions/51213763
复制相似问题