使用Angular4,我可以使用以下语法链接到组件:
<a routerLink="MYLINK">link</a>
然而MYLINK
的语法对我来说并不清楚。它是根据RFC 3986的路径,即它是否必须遵循URL转义规则?或者它是非转义路径段的串联?
例如,我会写
<a routerLink="/root/my%20page">link</a>
或
<a routerLink="/root/my page">link</a>
是否在Angular的任何地方都有记录?
我的期望是,在传递路径时,路径必须是URL编码的。传递段数组时,段不会进行URL编码。
答案 0 :(得分:0)
创建档案CustomUrlSerializer.ts
从'@ angular / router'导入{UrlSerializer,UrlTree,DefaultUrlSerializer};
export class CustomUrlSerializer implements UrlSerializer {
parse(url: any): UrlTree {
let dus = new DefaultUrlSerializer();
return dus.parse(url);
}
serialize(tree: UrlTree): any {
let dus = new DefaultUrlSerializer(),
path = dus.serialize(tree);
// use your regex to replace as per your requirement.
return path.replace(/%20/g,' ');
}
}
`
导入en app.module.ts
提供者:[{提供:UrlSerializer,useClass:CustomUrlSerializer}],