繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM