当前位置: 首页 > 知识库问答 >
问题:

角路由链接查询可选参数的参数设置

秦安怡
2023-03-14

有没有一种干净的方法可以将当前可选查询参数与模板中链接上的附加可选查询参数合并?

当前URL:< code >/search;brand=Trek

所需的转到链接:/search;brand=Trek;start=1(startCount 将递增)

我知道Angular支持合并普通查询参数的功能(https://angular.io/docs/ts/latest/api/router/index/RouterLink-directive.html),但我认为它不适用于可选的queryParams。

这就是为什么这不起作用的原因:

<a class="nav-btn"
   queryParamsHandling="merge"
   [routerLink]="[ { start: startCount+1 } ]">
    Next Page
</a>

共有3个答案

田焕
2023-03-14

对于现有查询参数的保留和合并:

马丰
2023-03-14

我认为Angular的最新版本不可能做到这一点,所以这里是我的解决方案:

订阅并保存参数:

ngOnInit() {
  this.route.params.subscribe((params: Params) => {
    for(let param in params){
        if(params.hasOwnProperty(param)){
            console.log('param:', param);
            this.currentParams[param] = params[param];
        }
    }
  });
}

然后向currentParam对象添加其他可选参数:

this.currentParams.start = this.startCount+1;

并使用所有参数重新导航到您的路线:

this.router.navigate([ 'search', this.currentParams ]);
谈萧迟
2023-03-14

尝试

<a class="nav-btn"
   queryParamsHandling="preserve" <--- instead of 'merge'
   [routerLink]="[ { start: startCount+1 } ]">
    Next Page
</a>
 类似资料:
  • 是否可以在 Angular 2 路由中具有可选的路由参数?我在RouteConfig中尝试了Angular 1.x语法,但收到以下错误: “原始异常:路径“/ user /: id ?“包含”?

  • 英文原文:http://emberjs.com/guides/routing/query-params/ 通常情况下,URL的动态段是模型的一种序列化表示,最常见的是模型的ID。然后,有时候还需要将应用的其他状态也序列化到URL中。这可能是对从服务器端加载模型有影响的一些参数,比如要查看的是那一页结果;也可能是一些关于客户端状态的信息,比如在客户端实现排序时的记录排序规则。 当然URL中还可以被序

  • 所以我有一些路线,比如<code>/category/tech</code>和<code</categority/tech/new<code>和<code>/category/tech/old</code>等等 他们都使用 或者我必须分别定义它们,就像

  • 我已将路径修改为 在此之后,如果我试图访问url,它不会将我重定向到适当的页面,而是抛出一个错误,如下所示

  • 问题内容: 我有一条看起来像这样的路线: 但是,这行不通-如果我打电话,它会到达路线,但是如果我打电话,它不会。 是否可以有一个可选的splat参数,或者我必须使用正则表达式来检测到这一点? 编辑 : 更清楚地说,这是我要达到的要求: 第一和第二个参数是 必需的 第一个参数是静态的,第二个参数是命名的参数。 可以附加任意数量的 可选 附加参数,并且仍然可以实现。 问题答案: 这适用于Express

  • 例如,在具有分页列表的路由上,网址可能如下所示,表示我们已加载第二个网页: 使用指令和来传递查询参数。例如: 或者,我们可以使用服务通过JS跳转: 读取查询参数 See Official Documentation on Query Parameters