Angular - Запросить параметр с символом + - отправить как закодированный% 2B - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь отправить дату в URL с символом плюс (+). Проблема в том, что символ + заменяется пробелом.

Когда я пытаюсь закодировать дату, вот так:

let enforcement_date = this.parserFormatter.format(this.updateDate) + 'T00:00:00.000' + encodeURIComponent('+0000')

Похоже, что кодируется дважды, поэтому я получаю следующее:

url?&enforcement_date=2019-05-15T00:00:00.000%252B0000

Таким образом, %2B происходит от +, что я и хочу, но похоже, что символ % также кодируется с %25, что мне не нужно.

Я знаю, что они заменили плюс на пробел "" в Angular 5.2.7+, но я хочу закодировать мой + с помощью %2B, чтобы мой URL выглядел так:

url?&enforcement_date=2019-05-15T00:00:00.000%2B0000

Я не хочу использовать перехватчик, потому что не хочу влиять на другие маршруты.

Любой совет?

EDIT:

Хорошо, вот что я сейчас делаю:

Компонент:

const req = {
  'version': this.version,
  'enforcement_date': this.parserFormatter.format(this.updateDate) + 'T00:00:00.000' + encodeURIComponent('+0000')
}

this.service.update(this.itemToUpdate, req).subscribe(
  (res: HttpResponse<any>) => {
    this.toastr.success('Success')
  },
  (res: HttpErrorResponse) => {
    this.toastr.error(res.message);
  }
);

Услуги:

update(itemToUpdate:string, req:any): Observable<HttpResponse<response>> {
  return this.http
  .put<response>(`${this.resourceUrl}/${itemToUpdate}/firmware/version`, null, {
    params: req,
    observe: 'response'
  });
}
...