我正在构建简单的角度应用程序。有两个模块,分别是学生和老师。 这是我的项目的组织方式。
首先,当用户进入应用程序时,我让他选择他是老师还是学生。
取决于他的用户将被重定向到相应的模块。
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>
,我应该如何为这些模块编写路由器类。
答案 0 :(得分:1)
是的,您需要为单个模块定义路由,并且需要在模块组件文件中提供
下面应该是文件结构
- 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
与学生的另一个模块相同。
下一步是指定教师模块的内部路由。 以下是
的可能内容teacher-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{}
答案 1 :(得分:1)
延迟加载方式
// 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