中安拓也のブログ

プログラミングについて書くブログ

【Angular】お互いにDIしあっている(循環参照)と発生するエラー「Uncaught Error: Can't resolve all parameters for XXXService: (?, [object Object], [object Object]).」

バージョン情報

  • Angular: 5.0.1

エラー内容

AサービスクラスにBサービスクラスをDI、BサービスクラスにAサービスクラスをDI みたいなこと(循環参照状態)をしていた結果、タイトルのエラーが発生

Uncaught Error: Can't resolve all parameters for XXXService: (?, [object Object], [object Object]).
    at syntaxError (webpack-internal:///306:684)
    at CompileMetadataResolver._getDependenciesMetadata (webpack-internal:///306:15764)
    at CompileMetadataResolver._getTypeMetadata (webpack-internal:///306:15599)
    at CompileMetadataResolver._getInjectableMetadata (webpack-internal:///306:15579)
    at CompileMetadataResolver.getProviderMetadata (webpack-internal:///306:15939)
    at eval (webpack-internal:///306:15850)
    at Array.forEach (<anonymous>)
    at CompileMetadataResolver._getProvidersMetadata (webpack-internal:///306:15810)
    at CompileMetadataResolver.getNgModuleMetadata (webpack-internal:///306:15378)
    at CompileMetadataResolver.getNgModuleSummary (webpack-internal:///306:15216)

サービスクラスをもう一つ追加して、循環参照を解消した

Aサービスクラスから、いくつかメソッドをCサービスクラスに分離して、
Bサービスクラスには、Aサービスクラスでなく、CサービスクラスをDIするようにした(循環参照を解消)結果、解決した。

参考サイト

Can't resolve all parameters for User: (?, [object Object]). · Issue #34 · ionic-team/ionic2-starter-aws · GitHub