首页 文章

Angular2路由器URL在&中断

提问于
浏览
0

在我更新到最新的角度v4.3.2之后,我的所有网址都以&值为单位,例如我有一个我希望得到以下值的路由/:值:

http:// localhost:4200 / one&two

但它将我重定向到:

http:// localhost:4200 / one

并且由于来自网址的值是动态的,因此许多人可以拥有&我无法显示正确的结果 .

使用 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在&?

1 回答

  • 0

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

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

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

    从正则表达式中移除&它应该工作 .

相关问题