alienworkshop
@alienworkshop

Angular 2: Как сделать чтобы по отдельному роуту грузился отдельный модуль, а не весь AppModule?

Нужно разделить всё приложение на модули, при этом каждой фиче/составной части(например Sidebar), должен соответствовать свой модуль. Как сделать чтобы по отдельному роуту грузились только нужные модули?
Например, на странице /users нужно подгрузить SidebarModule и UserlistModule.
  • Вопрос задан
  • 422 просмотра
Решения вопроса 1
@emp1re
В app.module импортируем новый модуль
imports: [ UsersModule ]
В роутинге app нужно указать родительский роутинг для UsersModule
{
        path: 'users',
        loadChildren: './users/users.module#UsersModule',
    }

Создаем новый модуль users.module
imports: [  UserRoutingModule ]
declarations: [ UserComponent ]


В user.component. html и все статические елемент(SidebarModule и UserlistModule)
В user-routing пишем все нужные нам роутинги по этому модуля -

@NgModule({
  imports: [
   RouterModule.forChild([

      {
        path: '',
        component: UserComponent,
        canActivate:[AuthGuardService],
        children: [
          {
            path: '',
            children: [
              {
                path: 'users',
                component: ElseComponent,
                canActivate:[AuthGuardService]
              },
              {
                path: '',
                  redirectTo: 'users',
                  canActivate:[AuthGuardService]
              }
            ]
          }
        ]
      }
    ])
  ],
  exports: [
    RouterModule
  ]
})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AlexanderBelov
@AlexanderBelov
Frontend developer
Если я правильно понял, в декораторе указываем moduleId
@Component({
      moduleId: module.id,
      selector: 'sidebar-module'
      ...
    });


В роутах пишем
export const routes: Routes = [
...
  { path: 'users/:id', component: SidebarModule }
 ...
];


https://angular.io/docs/ts/latest/cookbook/compone...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы