2016-10-07 3 views
10

그래서 난 내 AppModule에 가져올 다음 각도이 최종 (2.0.0)를 사용하고의 내가 내 응용 프로그램을 구축 할 수 있도록 도와드립니다 지침과 구성 요소의 무리와 함께 WidgetsModule를 작성한다고 가정 해 봅시다하고있어Angular2에서 다른 모듈의 모듈을 상속하는 방법은 무엇입니까?

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 { } 

내보내기 []에있는 지시어를 사용하는 것과 같은 방법이 있습니까?

답변

11

그것은 직접적으로 접근 할 필요가 다음 링크를 vist에 자신의 WidgetsModule 그것의 자신의 FormsModule (어떤 식 으로든)에 직접 액세스해야하는 것처럼. 그래도 정리할 수있는 한 가지 방법은 에서 여러 곳에서 사용되는 모든 모듈을 내보내는 것입니다. 그럼 당신은 당신이 그 다른 모듈 중 하나를 사용하는 SharedModule의 구성 요소를 선언하는 말을하지 않는 SharedModule 사방

@NgModule({ 
    exports: [ 
    FormsModule, 
    CommonModule, 
    WidgetsModule 
    ] 
}) 
class SharedModule {} 

당신은 SharedModuleimports 그 중 할 필요가 없습니다 가져올 수 있습니다.

다른 모든 모듈에서 importsSharedModule 만 있으면됩니다. 이것은 많은 것을 정리하고, 하나의 공유 모듈 만 유지하면됩니다.

항목 :

+0

감사. 나는 그것을 지금 본다. 모든 모듈에서 실제로 모듈을 가져와야합니다. 인스턴스의 "재사용"은 없습니다. 그래도 문제 없습니다. 이 SharedModule은 유용합니다! 고맙습니다! – Pstr

0

나는 WidgetsModuleFormsModule (@ 각도/형태)와 동일하기 때문에 실제로 필요가 없습니다 것 같아요. WidgetsModule은 사용자 정의 모듈이며 FormsModule은 각도로 제공됩니다. 그것은 유일한 차이점입니다. 이 모듈은 모두 일부 기능을 수행하는 데 사용됩니다.

그래서 그냥 우리가 한 번 FormsModule를 선언하고 다음 문제가 해결되고 있음을 알 경우, 다른 모든 모듈에서 사용할 수있는 방법에 대한 생각합니다.

그냥에 One single NgModule versus multiples ones with Angular 2

+0

나는 ... 당신이 덜 반복 수입을하기 위해, 하나에 내 모듈에 합류에 대해 얘기하고 이해가 안 돼요? 그러나 이것은 모듈의 코드를 너무 많이 곱하여 Angular2에서 모듈화라는 아이디어를 없앱니다. – Pstr

+0

'모듈화'에 대해 별도의 모듈 'WidgetsModule'을 만들고 'FormsModule'과 같은 다른 모듈로 가져와야합니다. –

+0

네,하지만 별도의 WidgetsModule이 있습니다. 문제는 다른 모든 모듈에서 가져 오거나 부모 모듈과 동일한 가져 오기에서 공유 할 수 있는지 여부에 관한 것입니다. 하지만 지금은 그것이 그렇게 될 수 없다는 것을 이해합니다. 고맙습니다! – Pstr

3

모듈이 다른 모듈에 선언 된 구성 요소, 지침 또는 파이프에 대한 액세스 권한을 상속하지 않습니다. AppModule이 가져 오는 것은 ContactModule과 관련이 없으며 그 반대의 경우도 마찬가지입니다. ContactComponent가 [(ngModel)]과 바인딩되기 전에 ContactModule은 FormsModule을 가져와야합니다.

source: ngmodule

관련 문제