title: Angular router queryParamsHandling: 'preserve' not working
body: <p>I am using the following <code>navigate</code> call:</p>
  
  <pre class="lang-typescript prettyprint-override"><code>this.router.navigate([''], { queryParamsHandling: 'preserve' });
  </code></pre>
  
  <p>When I call my app using /?timeout=true the queryParams get removed.
  If I pass them using my manual parsing it works:</p>
  
  <pre class="lang-typescript prettyprint-override"><code>const url = window.location.href;
  const params = url.indexOf('?') !== -1 ? url.slice(url.indexOf('?') + 1)
                    .split('&amp;')
                    // tslint:disable:no-any
                    .reduce((params: any, param) =&gt; {
                        const [key, value] = param.split('=');
                        params[key] = value ? decodeURIComponent(value.replace(/\+/g, ' ')) : '';
                        return params;
                    }, {}) : {};
  this.router.navigate([''], params);
  </code></pre>
  
  <p>What am I missing here?</p>