Node.js NestJS创建一个新实例,自定义参数保留在依赖项注入层中

Node.js NestJS创建一个新实例,自定义参数保留在依赖项注入层中,node.js,typescript,nestjs,Node.js,Typescript,Nestjs,我试图在不破坏DI层的情况下创建一个新实例,允许我的实例访问它在其构造函数中使用的所有可注入服务 n我目前拥有的不允许使用任何可注入服务的示例: const camera: Camera = new Camera(id, options); 使用这种方法,camera类无法导入任何可注入的单例或类 我了解到您可以使用moduleRef创建新实例,因此我尝试了以下方法: const camera: Camera = await this.moduleRef.create(Camera); 但现

我试图在不破坏DI层的情况下创建一个新实例,允许我的实例访问它在其构造函数中使用的所有可注入服务

n我目前拥有的不允许使用任何可注入服务的示例:

const camera: Camera = new Camera(id, options);
使用这种方法,camera类无法导入任何可注入的单例或类

我了解到您可以使用
moduleRef
创建新实例,因此我尝试了以下方法:

const camera: Camera = await this.moduleRef.create(Camera);
但现在的问题是,我无法传递
ID
Options
参数,唯一的解决方案是在初始化后立即使用setter

问题:


如何在最新版本的NestJS中创建一个类的新实例(而不是单例实例),让nest的注入器创建它,并在创建时传递自定义参数

如果您想将其注入到某些模块中,请尝试这种方式

@模块({
...
供应商:[
{
useFactory:(optProvider)=>{
返回新相机(optProvider.id、optProvider.options);
}, 
提供:摄像机,
import:[OptProvider]//请注意,OptProvider是此模块中的有效提供程序
},
一些服务
]
})
导出类SomeModule{}
之后,您可以使用DI提供此对象

导出类SomeService(){
构造函数(受保护的只读照相机:照相机){}
}

嘿,谢谢你的时间和回答。这仍然不能回答我的问题,因为通过这种方式,您只能在模块中注入现有的可注入项,而不能通过moduleRef传递自定义值!因此,您可以使用这种方法构建您自己的提供者,您可以使用nestdi注入该提供者并使用它传输对象。不确定nest是否允许对其模块ref插入/删除某些内容,因为它可能比仅包含对象的数组更复杂。它可能有不明显的依赖关系