Маршрутизация между модулями в Angular - PullRequest
0 голосов
/ 04 ноября 2018

Я строю простое угловое приложение. Есть два модуля: ученик и учитель . Вот как организован мой проект.

Project structure

Сначала, когда пользователь входит в приложение, я позволил ему выбрать, является ли он учителем или учеником.

В зависимости от того, какой пользователь будет перенаправлен в соответствующий модуль.

import {NgModule} from '@angular/core';
import {Routes, RouterModule} from '@angular/router';
import { StudentModule } from './student/student.module';
import { TeacherModule } from './teacher/teacher.module';
import { HomeComponent } from './home/home.component';


const routes: Routes = [
    {
        path: '',
        component: HomeComponent
    },
    {
        path: 'student',
        loadChildren: () => StudentModule
    },
    {
        path: 'teacher',
        loadChildren: () => TeacherModule
    }
];

@NgModule({
    imports: [RouterModule.forRoot(routes)],
    exports: [RouterModule]
  })
  export class AppRoutingModule {


  } 

Вот мой app.routing.ts файл.

Моя проблема с нами, когда я перенаправлен в модуль, я хочу направить между компонентами в этом модуле. Должен ли я добавить еще <router-outlet> в каждый модуль или я могу сделать это только с <router-outlet> в AppModule.

Если мне нужно добавить еще <router-outlet>, как мне написать класс маршрутизатора для этих модулей.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Ленивый способ загрузки

// In app module route
{
 path: 'your-path',
 loadChildren: 'app/your.module#YourModule'
}

// in your module
const yourRoutes: Routes = [
  { path: '',  component: YourComponent }
];

export const yourRouting = RouterModule.forChild(yourRoutes);

@NgModule({
  imports: [
   yourRouting
  ],
  declarations: [
    YourComponent
  ]
})
export class YourModule{
}

Не ленивый способ загрузки

Просто импортируйте YourModule в основной модуль, и он будет работать, если маршруты не загружаются лениво.

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    YourModule,
    routing
  ],
  declarations: [
    AppComponent
  ],
  providers: [
    appRoutingProviders
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule {
}

Найдите время, чтобы прочитать документацию по маршруту https://angular.io/guide/router

Проверьте этот ответ https://stackoverflow.com/a/39284277/6786941

0 голосов
/ 04 ноября 2018

Да, вам нужно определить маршрутизацию для отдельных модулей, а в файле компонентов модуля вы должны указать

Ниже должна быть структура файла

- Teacher 
   -teacher.component.html  --> here you should put <router-outlet>
   -techer-routing.module.ts --> here you need to define routes for teacher module
   -teacher.module.ts --> import techer-routing.module here
   -Logincomponent
        -login.component.html
        -login.component.ts
   -Homecomponent
        -home.component.html
        -home.component.ts

То же, что и другой модуль для студентов.

Следующий шаг - указать внутренние маршруты модуля учителя. ниже приведены вероятные содержания

учитель-routing.module.ts

Ниже приведены примеры маршрутов для модуля учителя

 const routes: Routes = [
    {path: '', component: TeacherComponent, children: [
    {path: '', component: TeacherComponent,data: {title: "Teachers"}},
    {path: 'Home',  component:HomeComponent, data: {title: "Home"}},
    {path: 'Register',  component:RegisterComponent, data: {title: 
      "Register"}},
     ]
   }
 ]

@NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule],
})

export class TeacherRoutingModule{}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...