Angular2路由器URL在&

时间:2017-07-28 06:32:33

标签: angular typescript angular2-routing

在我更新到最新的角度v4.3.2后,我的所有网址都在&值,例如我有一个路由/:值,我想从中获取值:

  

http://localhost:4200/one&two

但它将我重定向到:

  

http://localhost:4200/one

由于网址的价值是动态的,很多人可以拥有&我无法显示正确的结果。

使用 CustomUrlSerializer 我设法将%26 替换为& ,并通过应用内部的路由器导航但仍处于初始状态页面加载网址被拆分:

import { UrlSerializer, UrlTree, DefaultUrlSerializer } from '@angular/router';

export class CustomUrlSerializer implements UrlSerializer {

  parse(url: any): UrlTree {
    const dus = new DefaultUrlSerializer();
    return dus.parse(url);
  }

  serialize(tree: UrlTree): any {
    const dus = new DefaultUrlSerializer();
    const path = dus.serialize(tree);
    return path.replace(/%26/g, '&').replace(/%2B/g, '+');
  }

}

是否有任何解决方案可以禁用网址破坏& ?

1 个答案:

答案 0 :(得分:0)

好的,所以我知道&在路由器中用作特殊字符但是如果你需要获取该值而不是将其拆分:

编辑: node_modules / @ angular / router / @ angular / router.es5.js

var SEGMENT_RE = /^[^\/()?;=&#]+/;
var QUERY_PARAM_RE =  /^[^=?&#]+/;
var QUERY_PARAM_VALUE_RE = /^[^?&#]+/;

删除&从那个正则表达式,它应该工作。