2016-10-13 9 views
4

は、ディレクトリ構造のための推奨事項があります:https://angular.io/docs/ts/latest/guide/style-guide.html#04-06角度2アプリケーション:角2スタイルガイド上に円形モジュールの依存関係

私は一般的にそれが良いの推薦だと思う、私は非常によく似た何かをすることで自分自身をつもりだろう。しかし、私はそれに問題を抱えてきました。誰かがそれを解決したのか不思議です。

heroesモジュールには、heroes-button.componentsharedディレクトリが含まれています。おそらく、このコンポーネントをアプリ全体で使用したいと思うでしょう(したがって、 "共有")。

同様に、villainsモジュールはディレクトリにvillains-button.componentを含んでいます。

私はその後、私は循環参照で終わるつもりだ、heroesモジュール内のいくつかの場所とvillainsモジュールでheroes-button.componentvillains-button.componentを使用したい場合。

要するに、AngularではModuleAをModuleBにインポートし、ModuleBをModuleAにインポートすることはできませんが、スタイルガイドには別の方法が示されます。

誰にでもこのシナリオの解決策はありますか?

+2

スタイルガイドは、各モジュール間で共有されているコンポーネントが共有ディレクトリにあり、その外部では参照されていないことを示唆しています。 モジュール間で共有されるコンポーネントは、上位レベルにあります。共有ディレクトリ/ app/shared – silentsod

+0

ソリューションはありますか?私はモジュールAがモジュールBにロードされ、モジュールBがモジュールAにロードされる同じ問題に遭遇しました。アプリケーションをコンパイルする際に、「最大コールスタックサイズを超えました」というエラーが発生しました。 –

+0

@ParikhVaibhav、私はちょうど以下の将来の質問者のためにこれを解決した方法を追加しました。それが役に立ったら教えてください。 –

答えて

2

私の解決策は、私に循環依存(この場合はvillains-button.componentとheroes-button.component)を強制的に共有モジュールに移動させることでした。最後に

ディレクトリ構造は次のようになります。

HeroesModule 
    -HeroComponentA 
    -HeroComponentB 
VillainsModule 
    -VillainComponentA 
    -VillainComponentB 
SharedModule 
    -HeroButton 
    -Villain Button <-- these two are now available across the application 

私のアプリケーションが成長してきたように、それは、あなたが「ヒーロー」ボタンは、他のヒーローものに属していると思うので、右感じるが、振り返ってみるとない場合があります私はAngular barがModules間の依存関係を循環させるのはとても嬉しいです。これは、アプリの成長に対応するための非常に危険なパターンです。

関連する問題