使用新的运算符时可以进行依赖注入吗?

问题描述 投票:0回答:1

实际上,我想实施某种策略模式。更准确地说,我想在运行时决定要实例化哪个类。

当然,这很简单。

if(...) {
this.service = new ServiceA();
} else {
this.service = new ServiceB();
}

但是,如果ServiceA和ServiceB在其类中使用依赖项注入怎么办?我必须通过那些实例,还是有更好的方法让Nest自动注入它们?

javascript node.js typescript dependency-injection nestjs
1个回答
1
投票

您可以同时注入这两种服务,然后将它们动态分配给您的变量:

service: Service;
constructor(private serviceA: ServiceA, private serviceB: ServiceB) {}

dynamicMethod() {
  if (...) {
    this.service = this.serviceA;
  } else {
    this.service = this.serviceB;
  }
}


如果可以在启动时评估条件(例如环境变量),则可以改用custom provider
© www.soinside.com 2019 - 2024. All rights reserved.