Angular2はデフォルトでencodeURIComponent()を使用してURLにqueryParamsをエンコードしますが、カスタムURLシリアライザを作成して既定の機能をオーバーライドすることで回避できます。
私の場合、カンマ(、)を(%2)に置き換えないように、Angular2は避けたかったのです。私はlang = en-us、en-ukとしてQueryを渡していましたが、lang = en-us%2en-ukに変換されていました。私はそれを働いた方法をここで
:あなたのメインappModule.ts
import {UrlSerializer} from '@angular/router';
import {CustomUrlSerializer} from './CustomUrlSerializer';
@NgModule({
providers: [{ provide: UrlSerializer, useClass: CustomUrlSerializer }]
})
これはあなたのデフォルトを壊さないことに線の下に追加
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,',');
}
}
CustomUrlSerializer.ts機能性を備え、必要に応じてURLを管理します。
これを確認してください。http://stackoverflow.com/questions/22944932/angularjs-resource-how-to-disable-url-entity-encoding – Deep
@Deep、あなたのリンクは角度1です。これは少し異なります。 – Derrick