angular - 在 Angular 中定义相对路由
问题描述
更新
我根据答案改变forRoot
了。forChild
所以,基本上我有问题,让它成为一个子模块,
@NgModule({
imports: [
CommonModule,
ARoutingModule,
BModule
],
declarations: [AppsComponent, ...],
exports: [
AppsComponent, ...
]
})
export class AModule { }
和
@NgModule({
imports: [
CommonModule,
BRoutingModule
],
declarations: [AppsComponent, ...],
exports: [
AppsComponent, ...
]
})
export class BModule { }
因此AModule
,由根模块和两个模块导入,AModule
并BModule
应定义自己的路由,例如
// ./A/A-Routing.module.ts
const routes: Routes = [
{
path: 'A',//<-- this shall route to www.site.com/A
component: AComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
declarations: []
})
export class ARoutingModule { }
在 SubSub 我有
// ./A/B/B-Routing.module.ts
const routes: Routes = [
{
path: 'B', //<-- this shall route to www.site.com/A/B
component: BComponent,
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
declarations: []
})
export class BRoutingModule { }
这可能吗?使用路径打印时,我可以获取子路由,但不能获取子子路由(即 B)。我可以在不知道之前的路径的情况下定义 B 中的路线吗?所以B
在不知不觉中定义A
www.site.com/something/else
else
在不知道的情况下定义路线something
?
这是一个stackblitz示例,main
有效,但Subs
不要...
解决方案
您必须修复一些问题才能使其正常工作。
- 您必须为您添加一个开放路线,
SubModule
这将是一个延迟加载的模块。您将在 main-routing.module.ts 文件中执行此操作
const routes: Routes = [
{
path: 'main',
component: MainComponent,
children: [{
path: 'sub',
loadChildren: './sub/sub.module#SubModule'
}]
}
];
- 然后,您将创建一个名为的模块
SubModule
,SubRoutingModule
并将充当 this 的路由模块SubModule
。您将在此处声明您的 Sub1Component 和 Sub2Component:
import { Sub1Component, Sub2Component } from './sub.component';
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { SubRoutingModule } from './sub-routing.module';
@NgModule({
declarations: [Sub1Component, Sub2Component],
imports: [SubRoutingModule]
})
export class SubModule { }
所以现在您的路线将更改为:
<a routerLink="/main/sub/sub1">Sub1</a> |
<a routerLink="/main/sub/sub2">Sub2</a>
这是一个更新的 StackBlitz供您参考。
推荐阅读
- javascript - 根据计算的小时数更改某些字体颜色 - JavaScript
- r - 在 x 轴上绘制四个分类变量的条形图,每个变量都有两个水平作为填充,具有各自的百分比
- firebase - 将 Flutter 流从 Firebase 转换为整数
- python - XGBoost,XGBClassifier:未知的目标函数错误
- powershell - 关闭powershell后服务停止
- vb.net - 使用 vb.net 计算文本框中所有出现的 vbCrLf
- java - 在apache camel中聚合后生成多个文件
- optimization - 寻找离测试点最近的位置
- android - 如何在手机上的 GLES 中绘制一个大的空心钻石?
- ssl - 如何生成符合 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 的 JKS 密钥库(服务器端)文件?