2016-08-21 17 views
0

私はメインのアプリケーションモジュールを持っていますが、これには子モジュールが必要ですが、これらの子どもが他のサービスやコンポーネントを使用しないようにしたいので、サブアプリケーションのように動作するので完全に分離してください。AngularJSモジュールを他のモジュールから分離することは可能ですか?

AppModule 
    - ModuleA 
    - ModuleB 

たとえば、次のPlunkerでは、モジュールAのprivateServiceにモジュールBがアクセスできないようにしたいとします。

https://plnkr.co/edit/PewaB7kGZp2I6XCxPMW9?p=preview

私はそれをどのように行うことができますか? ui-routerをそのまま使用できますか?

+0

これはモジュールのためのものです。このアプローチで抱える困難を説明してください。 「可能です」という回答は短すぎるため投稿できません(そして、ちょっと価値があります)。 – estus

+0

私は、例えば、** moduleA **と** moduleB **のような2つの他のモジュールを注入する親アプリを持っていると、moduleAはすべてのmoduleBサービスとコンポーネントを使用することができます。 –

+0

moduleAがmoduleB単位に依存する場合、moduleBはmoduleAの依存としてロードする必要があります。 moduleAがmoduleBユニットの一部を使用していますが、すべてではない場合、ユニットはmoduleAとmoduleBの両方によってロードされる共通モジュールに分割されます。 – estus

答えて

1

モジュール間の境界(sharedModule、privateModuleA、privateModuleB)は意味があります。

モジュール(たとえばprivateModuleA)は、後者のモジュールが前者の依存関係としてリストされていない場合、別のモジュール(たとえばprivateModuleB)からのユニットを使用すべきではありません。反対をすることは悪い習慣とみなされ、ちょうど避けるべきです。

AngularJSはa hierarchy of injectorsのAngular 2とは対照的に、アプリごとに1つのインジェクタを備えています。モジュールがロードされると、そのユニットはこのインジェクタインスタンスにロードされている他のモジュールで使用できます。これは変更できないことが予想される動作です。