title: Angular - Query Param with + symbol - send as encoded %2B
body: <p>I am trying to send a date in the URL with a plus (+) symbol.
  The problem is that the + symbol gets replaced with a space.</p>
  
  <p>When I try encoding my date, like so:</p>
  
  <p><code>let enforcement_date = this.parserFormatter.format(this.updateDate) + 'T00:00:00.000' + encodeURIComponent('+0000')</code></p>
  
  <p>It looks like it gets encoded twice, so this is what I end up with:</p>
  
  <p><code>url?&amp;enforcement_date=2019-05-15T00:00:00.000%252B0000</code></p>
  
  <p>So the <code>%2B</code> comes from the <code>+</code>, which is what I want, but it looks like the <code>%</code> symbol is also getting encoded with <code>%25</code>, which I do not want.</p>
  
  <p>I know they replaced the plus with a space " " in Angular 5.2.7+, but I want to encode my <code>+</code> with <code>%2B</code> so that my URL looks like this:</p>
  
  <p><code>url?&amp;enforcement_date=2019-05-15T00:00:00.000%2B0000</code></p>
  
  <p>I don't want to use an interceptor because I don't want to affect other routes.</p>
  
  <p>Any advice?</p>
  
  <p>EDIT:</p>
  
  <p>Okay so this is what I am currently doing:</p>
  
  <p><strong>Component:</strong></p>
  
  <pre><code>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&lt;any&gt;) =&gt; {
      this.toastr.success('Success')
    },
    (res: HttpErrorResponse) =&gt; {
      this.toastr.error(res.message);
    }
  );
  </code></pre>
  
  <p><strong>Service:</strong></p>
  
  <pre><code>update(itemToUpdate:string, req:any): Observable&lt;HttpResponse&lt;response&gt;&gt; {
    return this.http
    .put&lt;response&gt;(`${this.resourceUrl}/${itemToUpdate}/firmware/version`, null, {
      params: req,
      observe: 'response'
    });
  }
  </code></pre>