首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在模块间使用公共服务?

如何在模块间使用公共服务?
EN

Stack Overflow用户
提问于 2020-12-14 09:14:33
回答 1查看 664关注 0票数 0

如何为多个模块使用公共服务?

我有服务

代码语言:javascript
复制
@Injectable()
export class TestService {
  test(): number {
    return 123;
  }
}

我在App模块注册了。

代码语言:javascript
复制
  providers: [TestService],
  exports: [TestService]

我想使用它在产品模块和其他。

代码语言:javascript
复制
@Module({
  imports: [TestService],
  controllers: [ProductsController],
  providers: [ProductsService]
})

在产品模块中使用

代码语言:javascript
复制
    constructor(
        @Inject('TestService')
        private readonly TService: TestService,
    ) {}

错误:

  • 如果TestService是一个提供程序,那么它是否是当前ProductsModule的一部分?
  • 如果TestService是从一个单独的@Module导出的,那么该模块是在ProductsModule中导入的吗?
代码语言:javascript
复制
  @Module({
    imports: [ /* the Module containing TestService */ ]
  })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-14 09:48:18

您应该导入应用程序模块以使用serviceTest:

代码语言:javascript
复制
    @Module({
  imports: [AppModule],
  controllers: [ProductsController],
  providers: [ProductsService]
})

但是如果想了解更多信息,就不能解决循环依赖问题--访问:循环依赖

因此,解决方案是创建一个共享模块,并使用它们,您应该只导入模块,而不是服务,exp:

代码语言:javascript
复制
 @Module({
  imports: [SharedModule],
  controllers: [ProductsController],
  providers: [ProductsService]
})

关于共享模块共享模块的更多信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65286331

复制
相关文章

相似问题

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