2017-11-14 2 views
0

Angular에서 매우 새롭기 때문에 설치 문제 일 수 있습니다. 하지만 다른 모듈로 가져 오려고 할 때 정의되지 않은 모듈이 있는데 다른 모듈을 가져올 수 없기 때문에 순서와 관련이 있다고 생각합니다.가져온 모듈이 정의되지 않았습니다. Angular4

내 트리이 내 탐색 모음

navigation.component.html

<nav> 
    .... 
    <mylogin></mylogin> 
</nav> 

에 로그인의 컴팩트 버전을 추가하려고했다

|-- src/ 
| |-- app/ 
| | |-- components/ 
| | | |-- login/ 
| | | | |-- login.compact.component.html 
| | | | |-- login.component.html 
| | | | |-- login.component.ts 
| | | | |-- login.service.ts 
| | | | |-- login.module.ts 
| | | |-- ... 
| | | |-- components.module.ts 
| | |-- shared/ 
| | | |-- header/ 
| | | |-- footer/ 
| | | |-- navigation/ 
| | | |-- shared.module.ts 
| | |-- app.component.html 
| | |-- app.component.ts 
| | |-- app.module.ts 
| | |-- app.routes.ts 

그러나 때 추가처럼 보인다 LoginModule ~ 이 오류가 발생합니다. Unexpected value 'undefined' imported by the module 'LoginModule'

에서 6,

app.module.ts I

import {SharedModule} from './shared/shared.module'; 

import {ComponentsModule} from './components/components.module'; 
.... 
@NgModule({ 
declarations: [ 
    AppComponent, 
], 
imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpClientModule, 
    SharedModule, 
    ComponentsModule, 
    BsDropdownModule.forRoot(), 
    RouterModule.forRoot(
     APP_ROUTES, 
     {enableTracing: true}) 
], 
providers: [], 
bootstrap: [AppComponent] 
}) 
export class AppModule { 
} 

는이 응용 프로그램을 구성하는 나쁜 방법이? 또는 탐색에 사용할 공유 모듈에 로그인을 가져오고 시도하는 것이 잘못 되었습니까?

답변

0

먼저 SharedModule을 제공하지 않았으므로 을 SharedModule에 어떻게 가져 왔는지 모르겠습니다.

둘째, 한 모듈을 다른 모듈로 가져 오려는 경우. exports: []에 다른 모듈로 가져 오려는 모든 declarations을 추가해야합니다.

모듈 모듈 A가 가져에서 모듈 A

@NgModule({ 
    imports: [ 
    CommonModule, 
    FormsModule, 
    PipesModule, 
    NgbModule, 
    RouterModule, 
    AppRoutingModule 
    ], 
    declarations: [], 
    providers: [] 
}) 
export class HomeModule { 
} 

당신이 볼 수 있듯이, PipesModule를 가져

@NgModule({ 
    imports: [ 
    CommonModule 
    ], 
    declarations: [ 
    CapitalizePipe, 
    SentenceCasePipe, 
    FirstNamePipe, 
    ], 
    exports: [ 
    CapitalizePipe, 
    SentenceCasePipe, 
    FirstNamePipe, 
    ] 
}) 
export class PipesModule { 
} 

모듈 B : 여기 예제에 모두 declarations을 추가하여 모듈 B에 추가; 요구에 따라 다른 모듈에로드 할 수 있습니다. 그런 것들 모두가 발생합니다 AppModule에 일을 추가

참고

는 응용 프로그램로드에서 브라우저 DOM에로드 할 수 있습니다. 즉, 하나의 구성 요소에서만 사용되는 module을 추가하면됩니다. 이로 인해 응용 프로그램의로드 시간이 모든 모듈에 필요한만큼 확장 될 수 있습니다.

증분 모듈으로 앱을 최대한 중첩 스타일로 계획하여 앱을 더 빠르고 부드럽게로드하는 것이 좋습니다. 예제는 다음과 같습니다

AppModule 
AppComponent 
    | PublicModule 
    | PublicComponent 
     | LoginModule 
     | LoginComponnet 
       | HomeModule 
       | HomeComponent 
+0

덕분에, 나는 지침 (https://angular.io/guide/styleguide#overall-structural-guidelines) 여기에 설명 따르려고 노력했다. 그리고 나에게 내비게이션은 핵심 모듈 (또는 이름이 지정된 공유 모듈)이어야하지만 로그인해서는 안됩니다.탐색에서 로그인을 사용하려면 어떻게해야합니까? – John

+0

그런 경우 네비게이션에 login을 포함시켜야하므로 위 예제의 'Module B'는 'SharedModule'이되고 Module A는'LoginModule '이됩니다. 그게 도움이된다면? –

관련 문제