Typescript 动态';提供';服务
在我的项目中,我有各种实现“服务”接口的服务,因此我知道每个服务都有Typescript 动态';提供';服务,typescript,angular,dependency-injection,Typescript,Angular,Dependency Injection,在我的项目中,我有各种实现“服务”接口的服务,因此我知道每个服务都有findAll、find、create、(CRUD)等。。方法 现在我正在编写一个组件,您可以动态地附加到这些服务中的一个,它将调用findAll方法并从服务中检索所有实体 我正在使用webpack动态请求服务: ngOnInit() { // Load context for serice API directory: let req = require.context('../../../../a
findAll
、find
、create
、(CRUD)等。。方法
现在我正在编写一个组件,您可以动态地附加到这些服务中的一个,它将调用findAll
方法并从服务中检索所有实体
我正在使用webpack动态请求服务:
ngOnInit() {
// Load context for serice API directory:
let req = require.context('../../../../api', true, /^\.\/.*\.ts$/);
// Let's load the service (synchronously)
let service: Service = req('./' + serviceName + 'ApiService.ts')
太好了!现在,service
包含了我的服务。现在我只需要提供it,因为这些服务并没有全部添加到引导过程中,只是按需使用
因此,我的问题是;如何从组件中动态地“提供”服务?(完成此操作后,我将使用injector.get
检索服务实例。我要执行以下等效操作:
provide:service
在我的组件中,但是很明显,因为我已经在ngOnInit()
中了,现在做这个已经太晚了
编辑;似乎,从:没有干净的解决方案。但我会得到纠正。在这里大声说出来:创建一个服务,它接受serviceName
,返回对象。然后在组件的提供程序数组中使用该服务并使用它?这看起来像是XY问题。为什么组件(控制器)会这样做定义服务?这不是它的工作。@estus我不确定你是否理解这个问题。定义服务从来不是组件的工作-我只需要它的引用/实例。这是一个DI问题。你能编写自己的factory服务提供程序吗?请参阅此处的useFactory:“使用此技术创建具有工厂函数的依赖项对象,工厂函数的输入是注入服务和本地状态的某种组合。“您想将一些服务分配给provide
,并使其可在当前注入器上注入。如果不能调用此函数“定义服务”,那么可以做什么?引用其他服务的代理服务仍然是一个服务(顺便说一句,require
获取可注入的而不仅仅是一个类)。这个问题没有解释为什么应该在组件内执行此操作。顺便说一句,您所指的问题与主题无关,而是关于在服务中访问injector。问题是关于具有自己的injector的组件。