シンプルなangularアプリケーションを構築しています。studentとteacherの2つのモジュールがあります。これが私のプロジェクトの構成です。
最初に、ユーザーがアプリケーションに入るとき、私は彼に教師か生徒かを選択させました。
ユーザーに応じて、対応するモジュールにリダイレクトされます。
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>
を各モジュールに追加する必要がありますか、それともAppModule
の<router-outlet>
のみを使用して追加できますか?.
別の<router-outlet>
を追加する必要がある場合、それらのモジュールのルータークラスをどのように記述する必要がありますか。
遅延読み込みの方法
// 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のドキュメントを読むために少し時間をかけてください https://angular.io/guide/router
この回答を確認してください https://stackoverflow.com/a/39284277/6786941
はい、個々のモジュールのルーティングを定義し、提供する必要があるモジュールコンポーネントファイルで定義する必要があります
以下はファイル構造です
- 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{}