转义Angular4 routerLink中的URL

时间:2017-09-16 15:42:11

标签: angular url escaping

使用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编码。

1 个答案:

答案 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}],