Javascript Angular 8:在不使用构造函数的情况下将服务实例获取到另一个服务
我正在使用。我需要创建一些操作服务,并将该服务传递给自适应卡模块,然后从那里执行。但在实施过程中,我面临着一个问题。该操作服务依赖于其他服务,我们无法从构造函数传递该依赖项Javascript Angular 8:在不使用构造函数的情况下将服务实例获取到另一个服务,javascript,angular,adaptive-cards,Javascript,Angular,Adaptive Cards,我正在使用。我需要创建一些操作服务,并将该服务传递给自适应卡模块,然后从那里执行。但在实施过程中,我面临着一个问题。该操作服务依赖于其他服务,我们无法从构造函数传递该依赖项 **ActionService.js** import ServiceX from '../' import ServiceZ from '../' export Class ActionService{ constructor( private serviceX: ServiceX, privat
**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关键字调用操作服务,而不是将依赖项作为参数传递。因此,在执行函数内的实际服务中,servicex未定义
是否有任何方法可以在不调用构造函数的情况下注入服务
我在下面引用了url来注入它,但它仅在Angular 2中受支持
您可以使用
喷油器
constructor(private injector: Injector) {
let serviceX: ServiceX= this.injector.get(ServiceX);
}
仅供参考我尝试了这个方法,但没有成功,因为这里的问题是:为了注册自适应卡操作,我们应该传递一个没有任何参数的服务。i、 在Adaptivecardservice中,我们应该能够在没有任何参数的情况下传递ActionService。导出类AdaptiveCardService{AC.GlobalRegistry.actions.register('name-of-action',ActionService);}