だから私はAngular 2 final(2.0.0)を使用していて、アプリケーションのビルドに役立つ一連のディレクティブとコンポーネントを使用してWidgetsModuleを作成し、それを自分のアプリケーションにインポートするとします。 AppModule
import { NgModule } from '@angular/core';
import { UniversalModule } from 'angular2-universal';
import { WidgetsModule } from '../../../widgets';
import { App, appRouting } from './';
@NgModule({
imports: [
UniversalModule,
WidgetsModule,
appRouting
],
providers: [ AppPresenter ],
declarations: [ App ],
exports: [ ],
bootstrap: [ App ]
})
export class AppModule { }
次に、HomeModule、CartModuleなどの子モジュールでウィジェットを使用したいと思います。他のすべてのモジュールにWidgetsModuleをインポートせずに、ウィジェットを使用可能にするにはどうすればよいですか?
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { WidgetsModule } from '../../../widgets';
import { Cart, cartRouting } from './';
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
WidgetsModule, //<-- I want to avoid doing this in every module
cartRouting
],
providers: [ ],
declarations: [ Cart ]
})
export class CartModule { }
Exports []のディレクティブで行うようにそれを行う方法はありますか?
独自のWidgetsModule
(何らかの方法)に直接アクセスする必要があるのと同じように、独自のFormsModule
に直接アクセスする必要があります。ただし、クリーンアップする1つの方法は、SharedModule
から、複数の場所で使用されているすべてのモジュールをエクスポートすることです。次に、SharedModule
をどこにでもインポートできます
@NgModule({
exports: [
FormsModule,
CommonModule,
WidgetsModule
]
})
class SharedModule {}
それらの他のモジュールのいずれかを使用するimports
内のコンポーネントを宣言している場合を除いて、それらのいずれかをSharedModule
にSharedModule
する必要はありません。
次に、他のすべてのモジュールでは、imports
SharedModule
だけです。これは結局それをたくさんきれいにすることになり、あなたはただ一つの共有モジュールを維持する必要があります。
関連項目:
モジュールは、他のモジュールで宣言されているコンポーネント、ディレクティブ、またはパイプへのアクセスを継承しません。 AppModuleがインポートするものは、ContactModuleとは無関係であり、その逆も同様です。 ContactComponentが[(ngModel)]とバインドする前に、そのContactModuleはFormsModuleをインポートする必要があります。
WidgetsModuleはFormsModule(@角度/フォーム)。 WidgetsModuleは、angularによって提供されるユーザー定義モジュールおよびFormsModuleです。それが唯一の違いです。このモジュールは両方とも、いくつかの機能を実行するために使用されます。
したがって、FormsModuleを一度宣言し、他のすべてのモジュールで使用する方法を考えてみてください。その後、問題が解決されることを理解しました。
次のリンクをご覧ください 1つのNgModuleと複数のNgModuleの比較Angular 2