Угловой2 по умолчанию использует encodeURIComponent() для кодирования URL-адресов запроса в URL-адресе, вы можете избежать этого, написав собственный сериализатор URL-адресов и переопределив функциональные возможности по умолчанию.
В моем случае я хотел избежать Angular2, чтобы избежать замены запятой (,) на (% 2). Я передавал Query как 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-адресе в соответствии с вашими потребностями.
проверить это http://stackoverflow.com/questions/22944932/angularjs-resource-how-to-disable-url-entity-encoding – Deep
@Deep, ваша ссылка для углового 1, что немного отличается. – Derrick