首页 > 解决方案 > 在Angular 2+中注入自定义服务提供者的部门声明的新服务实例

问题描述

基本上我正在尝试创建一个具有列表组件的模块,我想重用它。

列表组件 get 是在其构造函数中注入的服务(服务 B):constructor(@Optional() private listService?: ServiceB) {}

还存在另一个带有构造函数的服务(服务 A):constructor(private is: ServiceB) {}

,它又用于与使用列表组件的组件通信。

ServiceA 被导出为提供者函数以隐藏 Service B 的存在:

export let ListServiceProvider = {
  provide: ServiceA,
  useFactory: (is: ServiceB) => new ServiceA(is),
  deps: [ServiceB]
};

我想要实现的是每个列表组件都会获得自己的一组服务,其中服务 A 被注入到外部组件中,而服务 B 被注入到服务 A 和列表组件本身中。

就目前而言,服务 A 为每个列表组件创建,但服务 B 为所有实例服务 A 共享。

如何实现上述目标?

数据流将是:父组件 <-> 服务 A <-> 服务 B <-> 列表组件。

标签: angularangular-services

解决方案


推荐阅读