Angular 8:在不使用构造函数的情况下,将服务的实例获取到另一个服务



我使用的是微软自适应卡2.0。我需要创建一些操作服务,并将该服务传递给自适应卡模块,然后它将从那里执行。但在实施过程中,我面临着问题。该操作服务依赖于其他服务,我们无法从构造函数传递该依赖关系。

**ActionService.js**
import ServiceX from '../'
import ServiceZ from '../'
export Class ActionService{
constructor(
private serviceX: ServiceX,
private serviceZ: ServiceZ
)
execute(){
this.serviceX.action()
}
}

**AdaptiveCard service**
import { ActionService } from '../'
import * as AC from 'adaptivecards';
export class AdaptiveCardService{
AC.GlobalRegistry.actions.register('name-of-action', ActionService);
}

这里的问题是,自适应模块使用NEW关键字调用Action服务,而不将依赖项作为参数传递。因此,在执行函数内部的实际服务中,servicex未定义。

是否有任何方法可以在不调用构造函数的情况下注入服务。

我参考了下面的url来注入它,但它只在Angular 2 中受支持

在没有构造函数注入的情况下获取服务实例

您可以使用Injector

constructor(private injector: Injector) {
let serviceX: ServiceX= this.injector.get(ServiceX);
}

有关信息,Angular Injector

最新更新