Je construis une application simple angular. Il y a deux modules en tant qu'étudiant et professeur . Voici comment s'est organisé mon projet.
Tout d'abord, lorsque l'utilisateur entre dans l'application, je le laisse choisir s'il est enseignant ou étudiant.
En fonction de ce que l'utilisateur sera redirigé vers le module correspondant.
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 {
}
Voici mon app.routing.ts
fichier.
Mon problème nous quand je redirigé vers le module, je veux router entre les composants de ces modules. Dois-je ajouter un autre <router-outlet>
dans chaque module ou puis-je le faire avec le seul <router-outlet>
dans AppModule
.
Si je devais ajouter un autre <router-outlet>
comment dois-je écrire ma classe de routeur pour ces modules.
Manière de chargement paresseux
// 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{
}
Manière de chargement non paresseuse
Importez simplement le YourModule
dans le module principal et cela fonctionnera si les routes ne sont pas chargées paresseusement.
@NgModule({
imports: [
BrowserModule,
FormsModule,
YourModule,
routing
],
declarations: [
AppComponent
],
providers: [
appRoutingProviders
],
bootstrap: [ AppComponent ]
})
export class AppModule {
}
Prenez le temps de lire la documentation de la déroute https://angular.io/guide/router
Vérifiez cette réponse https://stackoverflow.com/a/39284277/6786941
Oui, vous devez définir le routage pour les modules individuels et dans le fichier de composants de module, vous devez fournir
Ci-dessous devrait être la structure du fichier
- 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
Identique à un autre module pour les étudiants.
L'étape suivante consiste à spécifier les itinéraires internes du module enseignant. ci-dessous sont le contenu probable de
teacher-routing.module.ts
Voici les exemples d'itinéraires pour le module enseignant
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{}