【问题标题】:Angular 4 router %2F symbols in path路径中的 Angular 4 路由器 %2F 符号
【发布时间】:2018-01-04 04:45:31
【问题描述】:

angular4 路由器有问题。

我已经创建了一个菜单项列表,并且我从后端获取了用于创建路由器链接的对象,但如果 menuItem.link 等于 mypath/example 它将被 angular to mypath% 替换2Fexample 如果我点击了这个项目。

所以路由不起作用,因为它无法匹配任何路由,因为我已经为(mypath/example)定义了它

<a [routerLink]="['/', menuItem.link, menuItem.id]" routerLinkActive="active_link">

我尝试将 /* 添加到路由器链接,但仍然无法正常工作。感谢您的回答。

【问题讨论】:

  • 添加 $locationProvider.hashPrefix('');在你的配置中
  • @Vivz 是否适用于 angular4?

标签: angular angular4-router


【解决方案1】:

当你像这样使用 routerLink 作为数组时:

<a [routerLink]="[var1, var2]">title</a>

它将对数组的每个成员进行 URLEncode。这是预期的行为,因为它假定您将每个变量作为路由或子变量传递。

如果您不想要这个,请将其作为字符串传递。

<a [routerLink]="var1 + var2">title</a>

【讨论】:

    【解决方案2】:

    %2F 呈现为 / 字符(百分比编码)。问题出在您的路由配置中。确保你使用这样的东西:

    ({ path: "/*yourroute", component: yourcomponent, name: "Name" }),
    

    基本上确保你在/之后有*

    【讨论】:

    • 我已经试过了。在我的应用程序中,我有几个模块,在我的子路由中,我这样定义它: { path: '', component: MainChildComponent, children: [ {path: '/*mypath/example/:id', component: ExampleComponent } ] } 但是当我启动应用程序时出现错误:路由路径的无效配置不能以斜杠开头
    • 你找到答案了吗?我遇到了完全相同的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2018-04-09
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多