2016-09-20 7 views
1

NGmoduleは、私たちのコードをモジュールで整理する方法を提供します。角2とngmoduleインジェクタ

また、モジュールのプロパティとしていくつかのサービスを提供することを提案し、それが動作する方法を理解していません。

まず、それは私がNGmoduleのプロパティを提供にサービスを追加する場合、それは(私はそのサービスを利用するために別のものの内のモジュールを呼び出すために持っていることを意味する)にサービスを公開することを意味するのでしょうか?

それで、NGモジュールインジェクタレベルはありますか?

どのようにモジュールボックス外のサービスを別のモジュールで使用できますか?

答えて

2

サービスをモジュールで提供することは、サービスがインスタンス化され、モジュールの一部であるすべてのコンポーネント、ディレクティブ、およびパイプで使用可能になることを意味します。サービスはシングルトンなので、モジュールはそれらを使用するすべてのコンポーネント、ディレクティブ、またはパイプのサービスを追跡する必要があります。個々のコンポーネントでサービスを提供することもできますが、それは各コンポーネントのサービスをそれぞれインスタンス化し、最初にシングルトンサービスを使用する理由を事実上無効にします。これをモジュールレベルで提供することで、この問題が解決されます。

モジュールの外でサービスを利用可能にしたい場合は、何もする必要はありません。プロジェクトにインポートされたモジュール内でサービスを提供することは、プロジェクト内のどこでも利用可能であることを意味します。

関連:Why is a service provided in a feature module available everywhere?

あなたはモジュールの外部コンポーネント、ディレクティブ、またはパイプが利用できるようにしたい場合は、あなたがエクスポートする必要が彼ら(とあなたがそれらを使用したいモジュールにインポート) 。これは、モジュール内のexportキーワードを使用して行うことができます。

関連:

@NgModule({ 
    declarations: [COMMON_DIRECTIVES, COMMON_PIPES], 
    exports: [COMMON_DIRECTIVES, COMMON_PIPES], 
    providers: [ 
    {provide: NgLocalization, useClass: NgLocaleLocalization}, 
    ], 
}) 

楽しい事実:それは私たちはその後、私たち自身のモジュールにインポートCommonModule(docs)、からエクスポートしているためWhat classes should I export?

たとえば、あなたがNgIfディレクティブを使用できる場合1つのモジュール(ブートストラップされたルートモジュール)しかない場合、実際にはCommonModuleではなくBrowserModuleを使用します。 CommonModuleのすべての機能がBrowserModuleにある理由は、BrowserModuleがインポートしてCommonModule全体を再エクスポートするためです。

さらに詳しい情報が必要な場合は、angular2のウェブサイトのmodule systemに関する詳細なガイドがあります。以前にリンクしたFAQページも非常に便利です。

関連する問題