当angular 4应用程序包含特殊字符时,无法匹配该应用程序中的任何路由错误
在我的角度应用程序中,路线可能包含当angular 4应用程序包含特殊字符时,无法匹配该应用程序中的任何路由错误,angular,Angular,在我的角度应用程序中,路线可能包含()%&=,但当它包含这些路径上的任何路径时,我会收到此错误 ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 如何对路由进行编码?您可以使用替换项对URL进行硬编码 const path = 'catalog%2810%29'; // this is catalog(20) 或者使用函数对url进行编码 例如: 主链接路径是使用encodeUR
(
)
%
&
=
,但当它包含这些路径上的任何路径时,我会收到此错误
ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment:
如何对路由进行编码?您可以使用替换项对URL进行硬编码
const path = 'catalog%2810%29'; // this is catalog(20)
或者使用函数对url进行编码
例如:
主链接路径是使用encodeURI
函数创建的,目录链接路径是使用硬编码编码创建的。您可以使用替换项对URL进行硬编码
const path = 'catalog%2810%29'; // this is catalog(20)
或者使用函数对url进行编码
例如:
主链接路径是使用encodeURI
函数创建的,目录链接路径是使用硬编码编码创建的。您应该使用这是编码特殊字符的标准方法,以使它们在路由中可用
JavaScript提供了函数,并用于此目的。您应该使用这是编码特殊字符的标准方法,以使它们在路由中可用
JavaScript为此提供了函数和。为了在url中允许这些函数,定义了一个自定义url序列化程序:
import { DefaultUrlSerializer, UrlSerializer, UrlTree } from '@angular/router';
export default class CustomUrlSerializer implements UrlSerializer {
private _defaultUrlSerializer: DefaultUrlSerializer = new DefaultUrlSerializer();
parse(url: string): UrlTree {
// Encode parentheses
url = url.replace(/\(/g, '%28').replace(/\)/g, '%29');
// Use the default serializer.
return this._defaultUrlSerializer.parse(url)
}
serialize(tree: UrlTree): string {
return this._defaultUrlSerializer.serialize(tree).replace(/%28/g, '(').replace(/%29/g, ')');
}
}
在my providers数组中包括CustomUrlSerializer(在AppModule中):
为了在url中允许这些,定义了自定义url序列化程序:
import { DefaultUrlSerializer, UrlSerializer, UrlTree } from '@angular/router';
export default class CustomUrlSerializer implements UrlSerializer {
private _defaultUrlSerializer: DefaultUrlSerializer = new DefaultUrlSerializer();
parse(url: string): UrlTree {
// Encode parentheses
url = url.replace(/\(/g, '%28').replace(/\)/g, '%29');
// Use the default serializer.
return this._defaultUrlSerializer.parse(url)
}
serialize(tree: UrlTree): string {
return this._defaultUrlSerializer.serialize(tree).replace(/%28/g, '(').replace(/%29/g, ')');
}
}
在my providers数组中包括CustomUrlSerializer(在AppModule中):
本文档共有48页,解决方案在哪一页?从第2章“字符”(第9页)开始将是了解哪些字符是保留字符,哪些不是保留字符的良好起点。第2.4节“何时编码或解码”也很有帮助。本文件共有48页,解决方案在哪一页?从第2章“字符”(第9页)开始将是了解哪些字符保留,哪些不保留的一个良好起点。第2.4节“何时进行代码或解码”也是有帮助的。我有路由类<代码>组件/一些值/其他值/最后的值< /代码>,如果我使用它,它将考虑所有的值作为一个单一值,通过附上每个代码> /<代码>。非常感谢这个代码用于<代码>(< /代码>和代码>)< /代码>。但不适用于我在该问题中提到的其他特殊字符。我有路由<代码>组件/一些值/其他值/最后值< /代码>,如果我使用它,它将考虑所有的值作为一个单一值,通过附上每一个代码> /<代码>。非常感谢这个代码用于<代码>(< /代码>和代码>)<代码>。但不为我在问题中提到的其他特殊角色工作。