Aurelia Routing config.map中href选项中的动态参数

Aurelia Routing config.map中href选项中的动态参数,aurelia,Aurelia,这似乎是一个非常简单的问题,但它让我发疯 有人知道我如何在href路由配置选项中指定动态:id参数吗 不幸的是,以下方法不起作用: config.map([ // ... default parameterless routing here { route:[':id/request'], moduleId:'processes/bdd/request/request', name:'

这似乎是一个非常简单的问题,但它让我发疯

有人知道我如何在href路由配置选项中指定动态: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(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将保持设置为路由激活时最后设置的内容。在这种情况下,您可能希望将其初始化为某种有意义的默认值。

但是如果我删除路由配置中的href属性?如果我试图删除它,会出现以下错误:
error[app router]error:Invalid route config for“:id?/requestAuth”:动态路由必须指定一个“href:”以包含在导航模型中。
这是因为您设置了
nav:true
属性。如果您不打算以导航栏或类似的形式使用此路由,则删除该路由,路由器将停止抱怨。但是如果我确实想在导航栏中使用它,该怎么办?然后您需要为路由指定一个静态
href
值。想想该值将如何使用。它被用来建造导航栏。导航栏中的链接是静态的,而不是动态的。您必须为该路由提供“id”的“默认”值。如果默认值没有意义,那么该路线不应该是导航栏的一部分。