2017-11-13 1 views
0

これはわかりやすいです。私は非常に説明を感謝したいと思います。Angular 2の提供サービスのバレルファイルのエクスポート順DI動作の変更

すべてのコアサービスファイルをcommonフォルダに保存しておき、common.tsというバレルファイルに追加します。

これらのサービスをapp.moduleにインポートして提供します。

バレルファイルからエクスポートされたサービスの順序がDIの動作に違いがあるようです。

私は私が受け取る

export { Core } from './core'; 
export { TestService } from './test-service'; 

この順に輸出して実行すると

OtherServiceのためのすべてのパラメータを解決できません:

OtherServiceではないダミーのサービスです(?)不毛なファイルに含まれているのは、私のテストに固有のコンポーネントです。 OtherServiceはapp.moduleで提供され、TestServiceの後にリストされています(問題があるかどうか不明ですが、これは非常に奇妙な日です)。

私はOtherServiceがうまくTestServiceを受け取ることになります

export { TestService } from './test-service'; 
export { Core } from './core'; 
にcommon.tsバレルファイルに輸出の順序を変更した場合。私が考えることができる唯一の相互作用は、CoreServiceがapp.componentに注入されていることですが、TestServiceに依存しません。

バレルファイル内のエクスポートの順序を変更すると、Angular DIエンジンの動作が変更されるのはなぜですか?あなたが私に尋ねると、それは狂った話です。

必要に応じて、私はオンラインでの再生を試みることができますが、リクエストを待つことになります。任意の入力のための

おかげで、 マイク

+0

これは循環依存です。 – yurzui

+0

コメントありがとうございますが、循環依存ではありません。私は以前にそれに踏み込んで、そのシナリオを解決するためにインジェクタを注入し、循環参照を手動で要求しました。私は依存関係のない単純なTestServiceを作成しました。 – Mike

+0

私は最小限の複製を見たいと思います – yurzui

答えて

0

TL; DRは、公式な答えは存在しないようです。

Angular 2 - Dependency Injection and Barreling

この投稿は、いくつかの洞察力を持っていますが、最も重要なのは、輸出受注事項は、それが正式なとして文書化されていないことを確かに真実である一方であることに言及しています。

私は同じように私は私の輸入品を注文すると思います。

+0

大変ありがとうございました!私は少し違和感があり、コードに隠されていたり、私がまったく夢中だったことを心配していました。 – Mike

+0

ハハ、問題ありません!あなたは私たちの残りの人たちとまったく同じくらいいいですね! –

関連する問題