Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当angular 4应用程序包含特殊字符时,无法匹配该应用程序中的任何路由错误_Angular - Fatal编程技术网

当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节“何时进行代码或解码”也是有帮助的。我有路由类<代码>组件/一些值/其他值/最后的值< /代码>,如果我使用它,它将考虑所有的值作为一个单一值,通过附上每个代码> /<代码>。非常感谢这个代码用于<代码>(< /代码>和代码>)< /代码>。但不适用于我在该问题中提到的其他特殊字符。我有路由<代码>组件/一些值/其他值/最后值< /代码>,如果我使用它,它将考虑所有的值作为一个单一值,通过附上每一个代码> /<代码>。非常感谢这个代码用于<代码>(< /代码>和代码>)<代码>。但不为我在问题中提到的其他特殊角色工作。