これは私の主要コンポーネント(ルートコンポーネント)です。ここでは、アプリケーション全体を通してアクセス可能と思われるいくつかのサービスを宣言します。Angular2 - 両方のサービスが互いに必要な場合
@Component({
...
providers: [
WebSocketService,
...
AuthenticationService,
]
})
export class MainComponent { ... }
そして - 私がやっている - evrybodyが理解していることを確認する:
bootstrap(MainComponent, [...]);
をWebSocketServiceとAuthenticationServiceの両方が@Injectable()
でアノテートされています。両方のサービスが互いに必要とすることがわかるまで、すべてうまく機能しました。
例外: のすべてのパラメータを解決できません その結果、私はそのエラーメッセージを受信してるなど
をAuthenticationServiceは、バックエンドサーバとの通信にWebSocketServiceを必要とWebSocketServiceは、ユーザーがログインしているかどうかを確認するためにAuthenticationServiceを必要とします'AuthenticationService'(未定義)です。 のすべてのパラメータがInjectで装飾されているか、有効なタイプの注釈を持っていて、 'AuthenticationService'が注入可能で装飾されていることを確認してください。
ここには、AuthenticationServiceの断片があります。 WebSocketServiceは似ています。
@Injectable()
export class AuthenticationService implements OnInit {
constructor(private webSocketService:WebSocketService) {
}
...
}
私はこのような場合のために異なる、多分よりよい解決策(第3サービス、など)があるが、これは私の質問のポイントではないことを、知っています。 私が提示したのと同じようにAngular2を使って2つのサービスを互いに注入する方法があるかどうかを知りたいですか?
forwardRefを使用するのではなく、循環参照を修正する方がよいでしょう。 –