Angular2 路由器 URL 在 & 处中断

Angular2 Router URL breaks at &

在我更新到最新的 angular v4.3.2 之后,我所有的 url 都在 & 值处中断,例如,我有一个路由 /:value,我想从中获取值:

http://localhost:4200/one&two

但它会将我重定向到:

http://localhost:4200/one

而且由于 url 中的值是动态的,所以很多人都可以得到,但我无法显示正确的结果。

使用 CustomUrlSerializer 我设法将 %26 替换为 & 并通过应用程序内的路由器工作但仍在初始页面加载 url 被拆分:

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, '+');
  }

}

是否有任何解决方案来禁用 url 在 & 处中断?

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

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

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

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