2017-05-17 2 views
1

각도 4로 첫 번째 응용 프로그램을 만들고이 app.module에 모듈을 가져 와서 appModule.ts에 appModule.ts로 가져 왔습니다. 표시 "할 수 있습니다. 이 원칙에서, 나는 아래 모듈 (retaguarda.module)에서 선언하지 않았지만, 컴포넌트 retaguarda.component는 html에 <router-outlet> </ router-outlet> 태그를 가지고있다. 표시된 오류는 위에서 설명한 바와 같이 rearRemodule 내부의 AppRoutingModule을 가져 오라고 요청한다. app.module에 선언 된 내용이 후면에 표시되어서는 안됩니다. 모듈도?여러 모듈에서 작동하지 않는 각도 경로

retaguardamodule에서 직선으로 선언하면 오류가 사라지지만 탐색에는 버그가 있으므로 문제가 두 곳 이상에 있다고 생각합니다. 그걸 도와 주실 수 있습니까?

app.module.ts :

... 
    @NgModule({ 
     declarations: [ 
     AppComponent 
     ], 
     imports: [ 
     BrowserModule, 
     FormsModule, 
     HttpModule, 

     AppRoutingModule, 
     RetaguardaModule, 
     LoginModule 
     ], 
     providers: [ 
     LoginGuard, 
     LoginService, 
     Ambiente 
     ], 
     bootstrap: [AppComponent] 
    }) 
    export class AppModule { } 

retaguarda.module.ts :

... 
@NgModule({ 
    imports: [ 
    CommonModule, 
    NavbarModule, 
    SidenavModule, 
    CadastrosModule, 
    MovimentacoesModule, 
    AdministracaoModule, 
    RelatoriosModule, 
    ConfiguracoesModule, 
    DashboardModule 
    ], 
    declarations: [ 
    RetaguardaComponent 
    ], 
    exports: [ 
    RetaguardaComponent 
    ] 
}) 
export class RetaguardaModule { } 

app.component.html :

<app-retaguarda></app-retaguarda> 

retaguarda.component.html :

<header> 
    <app-navbar *ngIf="ambiente.usuarioLogado"></app-navbar> 
    <app-sidenav ></app-sidenav> 
</header> 
<div class="container"> 
    <router-outlet></router-outlet> 
</div> 
+0

을 'AppRoutingModule'을 가져 오는 대신에'[RouterModule'] (https://angular.io/docs/ts/latest/api/router/index/RouterModule-class.html)에서 묻습니다. 그 이유는'AppModule'이 현재 유일하게 그렇게하고 있으며 단지 "포함 된"컴포넌트 만이'router-outlet' 선언을 알고 있기 때문입니다. 설명서에 라우터에 대해 더 잘 알고 싶습니다. –

답변

2

여기서 .forRoot().forChild()을 사용해야합니다.

AppRoutingModule.forRoot()로 시작하고 단일 경로를 사용하면 RetaguardaComponent을 제공합니다. 다음으로 RetaguardaModule 표기법을 모듈 내에서 라우팅하려면 .forChild() 표기법을 사용하십시오.

RetaguardaComponent에 자식 경로가없고 경로 자체가 아니기 때문에 (항상 표시됨) CoreModule에 배치하고 AppComponent에서 라우팅을 처리하는 것이 좋습니다.

라우팅 설정하는 방법에 대한 더 나은 이해 얻기 위해 더이 페이지에서 읽기 : 밀접는 것을 볼 수 있습니다 당신이 (당신이 당신의 질문에 공급하지 않았다) 오류를 보면

https://angular.io/docs/ts/latest/guide/router.html#!#why-routing-module

+0

읽을 것이지만, appModule이 내 핵심이되어야합니다, 맞습니까? "retaguarda"는 응용 프로그램 중 하나의 이름입니다. 모든 모듈을 appModule 내에서 선언 할 때 모든 것이 작동했지만이 리팩토링을 통해 각 모듈을 부모 모듈 내에 남겨 두었습니다. 모든 모듈 : CadastrosModule, MovimentacoesModule, AdministracaoModule, RelatoriosModule, ConfiguracoesModule, DashboardModule은 RetaguardaModule의 하위 요소입니다. –

+1

이들은 한 곳에서 단수 (또는 비 라우트) 구성 요소를 함께 유지하기 위해 별도의 'CoreModule'을 권장합니다. 이 링크는 도움이 될 것입니다 : https://angular.io/docs/ts/latest/guide/ngmodule.html – chrispy

+1

'Retaguarda'는 실제로 여러분의'AppModule'의 더 많은 것 같습니다. 그리고 그들은 분리되어서는 안됩니다. – chrispy