首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何在一个变量中注入一些东西?

我如何在一个变量中注入一些东西?
EN

Stack Overflow用户
提问于 2020-03-04 03:21:14
回答 1查看 494关注 0票数 0

我在一个模块中提供了一个服务:

代码语言:javascript
复制
import { Module } from '@nestjs/common';
import { SomethingService } from './something.service';

@Module({
  providers: [SomethingService]
})
export class SomethingModule {}

在另一个文件中,我想在一个常量中注入这个服务。对于typedi,我会做类似以下的事情:

代码语言:javascript
复制
import { Container } from 'typedi';
const service = Container.get(SomethingService);

我如何使用Nest.js来实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2020-03-04 03:35:55

Nest的自然依赖注入系统通过constructor进行依赖注入。注入值通常如下所示:

代码语言:javascript
复制
@Injcetable()
export class SomeAwesomeClass {

  constructor(private readonly somethingService: SomethingService) {}
}

Nest通过大量的反射,找出您通过类名注入的内容。如果您出于某种原因而需要使用injection to a property,您可以这样做:

代码语言:javascript
复制
@Injectable()
export class SomeAwesomeClass {

  @Inject()
  private somethingService: SomethignService;
}

Nest应该能够解决注入,尽管通常基于构造函数的注入是首选的,因为它更可靠,并且是大多数Nest应用程序的标准方法。

确保在模块元数据中也导出提供程序,然后将提供程序的模块导入到将注入提供程序的模块中。例如。

代码语言:javascript
复制
@Module({
  providers: [SomethingService],
  exports: [SomethingService],
})
export class SomethingModule {}
代码语言:javascript
复制
@Module({
  imports: [SomethingModule],
  providers: [OtherService],
})
export class OtherModule {}
代码语言:javascript
复制
@Injectable()
export class OtherService {
  constructor(private readonly somethingService: SomethingService) {}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60514162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档