我正在尝试设置我的路由器,以便它使用
../RouteSegment1/RouteSegment2/..
.
enum RouteSegment1 {
value1,
value2
}
enum RouteSegment2 {
value1,
value2
}
一个有效的解决方案是这样明确地定义每个路由
const routes: Routes = [
{
path: '', component: ParentComponent, children: [
{
path: RouteSegment1.value1,
component: RouteSegment1Component,
},
{
path: RouteSegment1.value2,
component: RouteSegment1Component,
},
{
path: RouteSegment1.value1/RouteSegment2.value1,
component: RouteSegment2Component,
},
{
path: RouteSegment1.value1/RouteSegment2.value2,
component: RouteSegment2Component,
},
{
path: RouteSegment1.value2/RouteSegment2.value1,
component: RouteSegment2Component,
},
{
path: RouteSegment1.value2/RouteSegment2.value2,
component: RouteSegment2Component,
},
]
},
];
正如你所看到的,这显然不是一个好的解决方案,而且在以后会变得更糟。
我的最终目标是建立这样的路线:
const routes: Routes = [
{
path: '', component: ParentComponent, children: [
{
path: RouteSegment1,
component: RouteSegment1Component,
},
{
path: RouteSegment1/RouteSegment2,
component: RouteSegment2Component,
},
]
},
];
因此,不是枚举值的路由不会路由到RouteSegmentComponents,我将有一个可扩展的解决方案。
也许有一种方法可以使用
route parameters
通过将可能的值限制为枚举。不幸的是,我无法想出一个有效的解决方案。我尝试在这些段上使用保护来检查参数是否是枚举的有效值。也许我只是执行错误。
这是正确的方法吗?如何配置路由以使用给定的segmentenum进行扩展?