Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用新操作员时是否可以进行依赖注入?_Javascript_Node.js_Typescript_Dependency Injection_Nestjs - Fatal编程技术网

Javascript 使用新操作员时是否可以进行依赖注入?

Javascript 使用新操作员时是否可以进行依赖注入?,javascript,node.js,typescript,dependency-injection,nestjs,Javascript,Node.js,Typescript,Dependency Injection,Nestjs,实际上,我想实施某种策略模式。更准确地说,我想决定在运行时实例化哪个类 当然这很简单 if(...) { this.service = new ServiceA(); } else { this.service = new ServiceB(); } 但是如果ServiceA和ServiceB在它们的类中使用依赖注入呢?我必须传递这些实例,还是有更好的方法让nest自动注入它们?您可以注入这两个服务,然后动态地将它们分配给变量: service: Service; constructor(pr

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

当然这很简单

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

但是如果ServiceA和ServiceB在它们的类中使用依赖注入呢?我必须传递这些实例,还是有更好的方法让nest自动注入它们?

您可以注入这两个服务,然后动态地将它们分配给变量:

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

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


如果可以在启动时评估条件(例如,环境变量),则可以改用。

否,不能创建依赖项并将其注入。尽管Kim在下面为你提供了一个很好的选择