如何在Angular 8中的“[routerLink]”上禁用动态生成的URL编码?

如何在Angular 8中的“[routerLink]”上禁用动态生成的URL编码?,angular,angular-routing,Angular,Angular Routing,我有如下[routerLink] <li *ngFor="let item of pageNumbers" class="page-item"> <a class="page-link" [routerLink]="getPageUrl(item) | async" routerLinkActive="active" >{{ item }}</a > </l

我有如下
[routerLink]

 <li *ngFor="let item of pageNumbers" class="page-item">
      <a
        class="page-link"
        [routerLink]="getPageUrl(item) | async"
        routerLinkActive="active"
        >{{ item }}</a
      >
    </li>
但在浏览器上显示url如下

http://localhost:3005/documents%3FstartIndex%3D1 
期望的:

http://localhost:3005/documents?startIndex=1
我是不是遗漏了什么?我只想直接将分页绑定到[routerLink],但会有更多的查询字符串参数(过滤器、排序)进入URL,这就是我尝试动态生成URL的原因。

检查文档以了解:

  • [routerLink]
    用于传递
    之前的内容,称为“参数”
  • [queryParams]
    用于传递
    之后的内容,称为“查询参数”
因此,要解决您的问题,一个可能的解决方案是从
getPageUrl
返回一个对象,而不是一个字符串,该对象将同时具有参数和查询参数:

publicGetPageURL(页码:number):可观察{
返回this.route.url.pipe(
映射((段:URLSEMENT[])=>{
返回{params:segments,queryParams:{startIndex:pageNumber};
})
);
}
你是这样使用它的:


{{item}}您能检查一下您提供的关于
router.navigate()的URL吗
。我不想处理这个问题,我希望生成的URL显示为非编码。有一个关于“按URL导航检查”的答案,我不想动态导航。我希望URL在鼠标悬停在href上时显示,以便人们可以将其添加到书签中。我刚刚注意到,
queryParams
是我需要使用的东西。感谢您的帮助ost.您根本不需要路由URL。只需传递
routerLink=“.”
然后是queryParams。基本上不需要TS。如果您还有其他查询参数,请确保查看queryParamsHandling。queryParamsHandling与merge承诺一起,我没有注意到。谢谢!
http://localhost:3005/documents?startIndex=1