Angular 路由器查询参数处理:'preserve' 不工作

Angular router queryParamsHandling: 'preserve' not working

我正在使用以下 navigate 调用:

this.router.navigate([''], { queryParamsHandling: 'preserve' });

当我使用 /?timeout=true 调用我的应用程序时,queryParams 被删除。 如果我使用我的手动解析传递它们,它会起作用:

const url = window.location.href;
const params = url.indexOf('?') !== -1 ? url.slice(url.indexOf('?') + 1)
                  .split('&')
                  // tslint:disable:no-any
                  .reduce((params: any, param) => {
                      const [key, value] = param.split('=');
                      params[key] = value ? decodeURIComponent(value.replace(/\+/g, ' ')) : '';
                      return params;
                  }, {}) : {};
this.router.navigate([''], params);

我在这里错过了什么?

它被一个我不认识的 Navigation Guard 覆盖了。现在通过更改初始导航的完成方式修复它,在它之前放一个 QueryParamService 我写的。