【发布时间】:2016-07-14 07:42:30
【问题描述】:
这是我的主要组件(根组件)。这里我声明了一些应该可以通过整个应用程序访问的服务。
@Component({
...
providers: [
WebSocketService,
...
AuthenticationService,
]
})
export class MainComponent { ... }
而且 - 确保每个人都能理解 - 我正在做:
bootstrap(MainComponent, [...]);
WebSocketService 和 AuthenticationService 都用@Injectable()注解。一切都很好,直到我发现这两种服务都需要彼此。
AuthenticationService 需要 WebSocketService 与后端服务器通信,WebSocketService 需要 AuthenticationService 来检查用户是否登录等。
因此,我收到了该错误消息:
例外:无法解析所有参数 'AuthenticationService'(未定义)。确保所有参数 用 Inject 装饰或具有有效的类型注释,并且 'AuthenticationService' 用 Injectable 修饰。
这里是AuthenticationService的片段。 WebSocketService 看起来很相似。
@Injectable()
export class AuthenticationService implements OnInit {
constructor(private webSocketService:WebSocketService) {
}
...
}
我知道,对于这种情况(第三次服务等)有不同的甚至更好的解决方案,但这不是我的问题的重点。 我想知道是否有一种方法可以使用 Angular2 以我提出的类似方式将两个服务相互注入?
【问题讨论】:
-
修复循环引用而不是使用 forwardRef 会更好。
标签: angular angular2-di