2016-11-17 5 views
0

角度モジュールシステムを最も基本的な形態で理解するために、私はこれを見ていた:https://github.com/mgechev/angular-seedAngular2モジュールシステム(TS付)

この種のプロジェクトでは、index.tsshared.module.tsの両方を持つSharedModuleがあります。 shared.module.tsでは、ディレクティブ、輸出、プロバイダなどを使用して角をエクスポートします。index.tsでは、それらを再エクスポートします。 app.module.tsでは、これは完璧なSharedModule.forRoot()をインポートします。これは、NameListServiceを登録してアプリケーション全体で利用できるようにします。しかし、NameListServiceを使用する場合は、インポートする必要があります。これはhome.component.tsに示されているimport { NameListService } from '../shared/index';で行われます。home.module.tsの一部であり、SharedModuleもインポートされます。

私によれば、これは完全に間違っています。

なぜこのようにインポートする必要がありますか?これはモジュール性を壊します。私が書いていないモジュールを使用していて、ファイルを探す場所がわからない場合はどうしたらいいですか?

shared/index.tsの代わりにshared/index.tsで使用する必要がある場合は、shared.module.tsに登録して登録するのはなぜですか?

敬具

答えて

1

私はこの質問は、角のウェブサイト上でオーバー答えてきたと信じて:https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-ng-vs-js-modules

を私はngModules

の深さのガイドのためのhttps://angular.io/docs/ts/latest/guide/ngmodule.htmlを読んで推薦更新

角型コンパイラと型付きコンパイラという2つの異なるコンパイラの観点から考えてみてください。

パスでUserServiceを参照するという事実は、typescriptコンパイラがそれを見つけることを可能にします。 UserServiceが見つからない場合、コードはコンパイルされません。また、インテリセンスとタイプチェックも提供します。角度コンパイラはこれを気にしません。

ngModuleにUserServiceを追加すると、Angularコンパイラはそのインスタンスを作成してコンポーネント、サービスなどに提供できます。これを行わなかった場合、「UserServiceのプロバイダが見つかりません"

+0

はい。私はこれを知っていますが、互いに通信することなく両方のシステムを並行して使用するのは奇妙な(不必要な)ものです。上記の例の私の問題は、有効なAngularモジュールの一部であっても、UserServiceが経由するパスを指定する必要があることです。 – mp3por

+0

私は自分の答えを更新しました –

関連する問題