角服务到服务通信和“检测到循环依赖”警告

时间:2019-04-30 14:53:24

标签: angular typescript circular-dependency

非常简单,我有一个AuthenticationService和UserService。 UserService包含在AuthenticationService中。然后,当我在UserService中使用AuthenticationService时:

constructor(private authService: AuthenticationService){}

我得到:

Circular dependency detected:
src/app/core/authentication/authentication.service.ts -> src/app/shared/services/user.service.ts -> src/app/core/authentication/authentication.service.ts

这两个服务都在应用程序模块提供程序数组中声明。为什么会得到循环依赖?

1 个答案:

答案 0 :(得分:3)

您在 UserService 中注入了 AuthenticationService ,在 AuthenticationService 中注入了 UserService !不要这样做!

此处出现的循环依赖项与直接或间接相互导入的文件有关。这在软件中并不罕见,但是结果可能会有所不同。这不一定意味着会发生错误,但重要的是要浮出水面,因为根据使用情况可能会发生错误。

在大多数情况下,很容易将您的方式重构为无循环依赖关系,因此这就是警告的原因,但是最终,我认为摆脱这些类型的模式是一种好习惯。

对于“隐藏警告”,您应在。 angular-cli.json 中添加以下内容 showCircularDependencies

 "defaults": {
    "build": {
      "showCircularDependencies": false
    }
  }