필자는 모든 기능이 자체 모듈 (기능은 페이지 또는 페이지의 일부일 수 있음)을 가진 응용 프로그램을 작성하고 있습니다. 모든 기능이 자체 도메인 로직, 서비스, 지시문 및 구성 요소 (예 : 대시 보드 모듈)에 로그인 또는 프로필과 같은 다른보기에 표시하지 않으려는 ChartComponent 위젯을 가지고 있기를 원하기 때문입니다.
문제는 각도 2로 라우팅 할 때 항상 모듈이 아닌 특정 구성 요소로 라우팅하는 것입니다.
여기서는 path : '/ dashboard'구성 요소에 대한 경로를 설정합니다. DashboardComponent는 app.module.ts에서 DashboardComponent를 선언해야합니다. 아직 괜찮 았지만 모듈 app.module에 있으므로 CharComponent는 다음과 같습니다. 노출되지 않으며 우리의 DashboardComponent에서 렌더링되지 않습니다. 왜냐하면 dashboard.module.ts에 선언 되었기 때문에 app.module.ts에 선언되어 있기 때문입니다.
우리가 ChartComponent를 app.module.ts에 선언했다면 제대로 작동하지만 우리 애플리케이션의 아키텍처를 잃어 버리게됩니다.
응용 프로그램의 파일 구조는 다음과 같습니다.
└─ src/
└─ app/
├─ app.module.ts
├─ app.component.ts
├─ app.routing.ts
├─ profile/
| ├─ profile.module.ts
| └─ profile.component.ts
├─ login/
| ├─ login.module.ts
| └─ login.component.ts
└─ dashboard/
├─ dashboard.module.ts
└─ dashboard.component.ts
└─ chart/
└─ chart.component.ts
메인 (앱) 모듈로 컴포넌트를 가져올 필요는 없습니다.
지연 경로를로드하는 경우 아래와 같이 경로를 정의 할 수 있습니다.
// In app module route
{
path: 'dashboard',
loadChildren: 'app/dashboard.module#DashboardModule'
}
// in dashboard module
const dashboardRoutes: Routes = [
{ path: '', component: DashboardComponent }
];
export const dashboardRouting = RouterModule.forChild(dashboardRoutes);
@NgModule({
imports: [
dashboardRouting
],
declarations: [
DashboardComponent
]
})
export class DashboardModule {
}
또는
가져올 수 있습니다.DashboardModule
주 모듈에 있고 경로가 느리게로드되지 않으면 작동합니다.
@NgModule({
imports: [
BrowserModule,
FormsModule,
DashboardModule,
routing
],
declarations: [
AppComponent
],
providers: [
appRoutingProviders
],
bootstrap: [ AppComponent ]
})
export class AppModule {
}
희망이 도움이 !!
게으른 로딩은 RC5에서 올바르게 작동하지 않았고, RC6으로 업그레이드되었고 모두 작동했습니다.
그 논리는 훌륭하지만, 나중에 계정 관리 기능 구성 요소 모듈에 모든 권한을 부여하여 기능을 계속 켜고 끌 수 있습니다. 사용자가 자신의 사용자 계정을 업그레이드하려는 모든 권한을 갖고 싶어하지는 않습니다. 미래. 확장 성 및 저장 기능은 시스템이 실제로 그 논리에 민감한 경우 향후 코딩에서 시간을 절약 할 것으로 예상합니다.