非常简单,我有一个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
这两个服务都在应用程序模块提供程序数组中声明。为什么会得到循环依赖?
答案 0 :(得分:3)
您在 UserService 中注入了 AuthenticationService ,在 AuthenticationService 中注入了 UserService !不要这样做!
此处出现的循环依赖项与直接或间接相互导入的文件有关。这在软件中并不罕见,但是结果可能会有所不同。这不一定意味着会发生错误,但重要的是要浮出水面,因为根据使用情况可能会发生错误。
在大多数情况下,很容易将您的方式重构为无循环依赖关系,因此这就是警告的原因,但是最终,我认为摆脱这些类型的模式是一种好习惯。
对于“隐藏警告”,您应在。 angular-cli.json 中添加以下内容 showCircularDependencies :
"defaults": {
"build": {
"showCircularDependencies": false
}
}