[英]Angular 8: Get instance of service to another service without using constructor
我使用的是Microsoft Adaptive Card 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 服务,而不是将依赖项作为 arguments 传递。因此,在执行 function 内部的操作服务中,servicex 变得未定义。
有没有办法在不调用构造函数的情况下注入服务。
我在下面引用了 url 来注入它,但它仅在 Angular 2 中受支持
您可以使用Injector
。
constructor(private injector: Injector) {
let serviceX: ServiceX= this.injector.get(ServiceX);
}
供参考Angular 喷油器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.