【发布时间】:2017-07-05 19:40:51
【问题描述】:
我有两个服务,都是@Injectable。 ServiceA 通过 Providers 数组提供给组件,并且在任何地方都很好用。 ServiceB 是一个单例,位于其模块的 Providers 数组中,并且在任何地方都可以很好地工作。 ServiceA 需要保持不是单例,ServiceB 需要保持单例。
我的问题是现在我需要从 ServiceB 访问 ServiceA,但不知道如何访问它。似乎我无法将非单例服务注入单例。
我遇到的所有事情都告诉我将服务放入引导程序或模块声明中,但正如我所提到的,我不能这样做,因为我需要 ServiceA 充当非单例。
// module setup
... providers: [ServiceB]
// non-singleton
@Injectable()
export class ServiceA
// singleton
@Injectable()
export class ServiceB {
constructor(ServiceA) // <-- this is the problem area, need to get ServiceA here
我尝试过类似 constructor(Inject(ServiceA) serviceA) 的操作,但似乎遇到了同样的错误
错误:DI 错误 没有 ServiceA 的提供者!
- 如何将非单例服务“提供”到单例服务中,其中两者都是 @Injectable?
【问题讨论】:
标签: angular typescript dependency-injection