如何忽略子路径中的括号。这是我的代码
{{1}}
只要id或title值中没有括号,它就可以正常工作。
如果某人在id或title值中输入括号,我该如何处理,因为它们是动态的,任何人都可以输入任何值。
请问我是否需要更多细节。感谢
答案 0 :(得分:0)
那是因为辅助路由,这是angular的默认行为。它有助于将数据传递到特定的路由器出口。当我面对它时,这非常令人沮丧。
解决方案:
通过重写UrlSerializer解决它。
示例:
创建文件 custom-url-serializer.ts
.tabs-md .tabbar , .tabs-ios .tabbar{
background: red;
}
,然后将其作为提供程序添加到您的 app.module.ts
import { UrlSerializer, UrlTree, DefaultUrlSerializer } from '@angular/router';
export default class CustomUrlSerialize implements UrlSerializer {
defaultUrlSerializer = new DefaultUrlSerializer();
parse(url: string): UrlTree {
/**
You can replace or remove anything from the url as u want
for ex in this case:
/home/hello(world) will become /home/hello%28world%29
**/
url = url.replace(/\(/g, '%28').replace(/\)/g, '%29');
return this.defaultUrlSerializer.parse(url);
}
serialize(tree: UrlTree): string {
// Decode it back to its original string
return this.defaultUrlSerializer
.serialize(tree)
.replace(/%28/g, '(').replace(/%29/g,')');
}
编译后,转到网址http://localhost:4200/hello(world)时,它不会引发“ 无法匹配任何路由。URL段错误”。
希望它可以帮助某人! :-)