【问题标题】:posibilty to get service whithout moduleRef.get在没有 moduleRef.get 的情况下获得服务的可能性
【发布时间】:2020-11-10 08:25:24
【问题描述】:

我可以使用此示例获取服务实例:

export class GetEntityDomainService {
  constructor(private readonly moduleRef: ModuleRef) { }

  getEntity(): void {
    const myObject = this.moduleRef.get(MyClassName);
  }
}

但是我如何在类对象之外调用服务实例 我没有moduleRef句柄的地方: 这是角度的例子:

const injector = ReflectiveInjector.resolveAndCreate(providers);
const widgets: WidgetService = injector.get(WidgetService);

https://kevinphelps.me/blog/2017-01-17-using-angular-dependency-injection-in-node

是否可以在不需要 moduleRef 的情况下下载服务实例?

谢谢 彼得

【问题讨论】:

  • 不使用moduleRef有什么好处?
  • 我在下面写一些解释

标签: nestjs


【解决方案1】:

有几个原因

有时我需要在函数中注入服务,然后我必须将 moduleRef 传递给该函数以使其成为可能

第二个例子是命令和事件—— 例如我创建了这样一个动作,然后我将参数传递给处理程序,:

this.dispach(new Command (parameters ...))

目前我的操作知道它们是从哪个模块触发的,以及它们的处理程序在哪个模块中——所以我不会在系统的错误区域(层、依赖项)之间发送操作。我在执行时检查所有这些

this.dispach (new Command ())

现在我必须编写如下的调度:

this.dispach (new Command (this.moduleRef, ... other parameters))

我可以从代码中创建一个 moduleRef 吗?它会促进创建动作的过程并消除传递 moduleRef 的需要

但我不知道它是否对我有帮助 当我分析 DI 嵌套时,它的工作方式与角度不同 服务知道它是在哪里声明的,当它在其中注入一些东西时,它使用在这个模块中声明的令牌 我想我只能注入一般范围

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多