Angular2 路由器 URL 在 & 处中断
Angular2 Router URL breaks at &
在我更新到最新的 angular v4.3.2 之后,我所有的 url 都在 & 值处中断,例如,我有一个路由 /:value,我想从中获取值:
但它会将我重定向到:
而且由于 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 = /^[^?&#]+/;
从那个正则表达式中删除 & 它应该可以工作。
在我更新到最新的 angular v4.3.2 之后,我所有的 url 都在 & 值处中断,例如,我有一个路由 /:value,我想从中获取值:
但它会将我重定向到:
而且由于 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 = /^[^?&#]+/;
从那个正则表达式中删除 & 它应该可以工作。