Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Angular4 routerLink中URL的转义_Angular_Url_Escaping - Fatal编程技术网

Angular4 routerLink中URL的转义

Angular4 routerLink中URL的转义,angular,url,escaping,Angular,Url,Escaping,使用Angular4,我可以使用以下语法链接到组件: <a routerLink="MYLINK">link</a> 或 链接 这是否记录在任何地方 我的期望是,当传递路径时,路径必须是URL编码的。传递段数组时,这些段将不会进行URL编码。Crea un-archivo CustomUrlSerializer.ts 从“@angular/router”导入{UrlSerializer,UrlTree,DefaultUrlSerializer} export clas

使用Angular4,我可以使用以下语法链接到组件:

<a routerLink="MYLINK">link</a>

链接
这是否记录在任何地方


我的期望是,当传递路径时,路径必须是URL编码的。传递段数组时,这些段将不会进行URL编码。

Crea un-archivo 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-tu app.module.ts


提供程序:[{provide:UrlSerializer,useClass:CustomUrlSerializer}],

Crea un archivo 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-tu app.module.ts


提供者:[{provide:UrlSerializer,useClass:CustomUrlSerializer}],

这篇文章可能会解决这个问题,它似乎与查询参数有关,而在上面的问题中,我对路径本身感兴趣。我不认为答案是特定于queyparameter的。。请试一下……对不起,我说得太慢了,但我不明白这和这个问题有什么关系,也不知道我会尝试什么。我基本上想了解“routerLink”指令使用的语法,而不必重新配置此逻辑。结果表明,路由器链接没有使用链接中提到的URL编码器。它将路径分割为段,但不对段应用任何解码。这与解析URL的方式不同,在本例中,对段进行解码。对我来说,这看起来像是一种不一致的行为。可能可以通过这篇文章来解决,因为它似乎与查询参数有关,而在上面的问题中,我对路径本身感兴趣。我不认为答案是特定于queyparameter的。。请试一下……对不起,我说得太慢了,但我不明白这和这个问题有什么关系,也不知道我会尝试什么。我基本上想了解“routerLink”指令使用的语法,而不必重新配置此逻辑。结果表明,路由器链接没有使用链接中提到的URL编码器。它将路径分割为段,但不对段应用任何解码。这与解析URL的方式不同,在本例中,对段进行解码。在我看来,这似乎是一种前后矛盾的行为。
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,' ');
    }
}