这似乎是一个非常简单的问题,但它让我发疯...
有谁知道如何在href路由配置选项中指定dynamic:id参数?
遗憾的是,以下情况不起作用:
config.map([
// ... default parameterless routing here
{
route:[':id/request'],
moduleId:'processes/bdd/request/request',
name:'Request', title:'Request', href:`#/bdd/request/${id}/request`, settings:{type:'Request', icon:''}, nav:true,
},
{
route:[':id/requestAuth'],
moduleId:'processes/bdd/request/requestauthorization',
name:'RequestAuthorization', title:'Request Authorization', href:`#/bdd/request/${id}/requestAuth`, settings:{type:'Request', icon:''}, nav:true,
},
// ... some additional mappings here
]);
href
属性是静态的。如果要使用此路由为链接生成路由,可以使用route-href
自定义属性,如下所示:
route-href="route: request; params.bind: { id: someProp }"
请注意,我将路由名称更改为camelCase(全部小写,因为它是一个单词),以匹配路由命名约定。
我有一个类似的用例,我可以通过向路由器添加一个管道步骤来实现这一点,该路由器可以动态改变配置。
我的用例可能有点不同,因为我只希望当路线处于活动状态时项目出现在导航栏中 - 假设我有路线/abc
,/def/:id
和/ghi
- 当活动路线是ABC或GHI时,仅这些项目将显示在导航栏中,但当活动路线为DEF时,它应显示在导航栏中,单击它应该会导致您当前正在查看的相同DEF ID。因此,我的路线配置包括一个设置,指示路线只有在活动路线时才会出现在导航栏中。
以下是我的实际configureRouter函数的有趣部分:
configureRouter(config, router) {
config.addPreActivateStep(Preactivate); // explained below
config.map([
// some routes
{ route: 'patients/:patientId', name: 'patient-master',
moduleId: 'patients-and-cases/patient-master/patient-master',
title: 'Patient', nav: true, settings: { renderOnlyWhenActive: true },
href: '#' // it doesn't matter what this is
},
// more routes
]);
}
这里是Preactivate
类,它将href设置为preactivate:
class Preactivate {
run(routingContext, next) {
routingContext.config.href = routingContext.fragment;
return next();
}
}
如果,与我不同,您希望它始终显示在导航栏中,这仍然有效 - href将保持设置为路径处于活动状态时设置的最后一项。在这种情况下,您可能希望将其初始化为某个有意义的默认值。