gpt4 book ai didi

javascript - angular 2 禁用 url 编码

转载 作者:可可西里 更新时间:2023-11-01 01:37:49 26 4
gpt4 key购买 nike

我想禁用 url 编码。

当我在下面使用它时。

this.router.navigate(['/profile', { tags: 'one,two' }]);

url是这样的

http://localhost:4200/profile;tags=one%2Ctwo

我希望它像下面这样

http://localhost:4200/profile;tags=one,two

有没有办法禁用 url 编码?

最佳答案

Angular2 默认使用 encodeURIComponent() 对 URL 中的查询参数进行编码,您可以通过编写自定义 URL 序列化程序并覆盖默认功能来避免它。

就我而言,我想避免使用 Angular2 以避免将逗号 (,) 替换为 (%2)。我将查询作为 lang=en-us,en-uk 传递,它被转换为 lang=en-us%2en-uk。

我是这样算的:

CustomUrlSerializer.ts

import {UrlSerializer, UrlTree, DefaultUrlSerializer} from '@angular/router';

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(/%2/g,',');
}
}

将以下行添加到您的主 appModule.ts

import {UrlSerializer} from '@angular/router';
import {CustomUrlSerializer} from './CustomUrlSerializer';

@NgModule({
providers: [{ provide: UrlSerializer, useClass: CustomUrlSerializer }]
})

这不会破坏您的默认功能,并会根据您的需要处理 URL。

关于javascript - angular 2 禁用 url 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41476193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com