Angular 角网络中模块间的路由

Angular 角网络中模块间的路由,angular,angular-routing,ng-modules,Angular,Angular Routing,Ng Modules,我正在构建简单的角度应用程序。有两个模块,学生和教师。 下面是我的项目是如何组织的 首先,当用户进入应用程序时,我让他选择是教师还是学生 根据用户将被重定向到相应模块的内容 import {NgModule} from '@angular/core'; import {Routes, RouterModule} from '@angular/router'; import { StudentModule } from './student/student.module'; import { T

我正在构建简单的角度应用程序。有两个模块,学生教师。 下面是我的项目是如何组织的

首先,当用户进入应用程序时,我让他选择是教师还是学生

根据用户将被重定向到相应模块的内容

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
文件

当我重定向到要在这些模块中的组件之间路由的模块时,我的问题就出现了。我应该在每个模块中添加另一个
,还是只能在
AppModule
中添加


如果我应该添加另一个
,我应该如何为这些模块编写路由器类

是的,您需要为各个模块和需要提供的模块组件文件定义路由

下面应该是文件结构

- 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

v8、v9及以上的延迟加载方式


v7、v6和更低版本的延迟加载方式

// 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 {
}
花些时间阅读rout文档


检查此答案

是的,您需要添加此选项。
// 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{
}
@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    YourModule,
    routing
  ],
  declarations: [
    AppComponent
  ],
  providers: [
    appRoutingProviders
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule {
}