1

我正在尝试在循环中将参数传递给我的 routerLink 。下面是对象数组的样子: 在此处输入图像描述

这是带有 routerLink 链接的循环:

<li *ngFor="let Achievement of AllAchievements">

    example from multiple sources
    does not work with a variable 'x'. Outputs the letter x
    <a routerLink="page" [queryParams]="{x : 1}">anchor text</a> 

    example from multiple sources
    link is outputted /%5B'page',%20%7BAchievement.type%20:%20'hello'%7D%20%5D'
    <a routerLink="['page', {Achievement.type : 'hello'} ]">anchor text</a>

    outputs long/encoded string as param value 
    <a [routerLink]="['page']" queryParams="{ [Achievement.type] : 'hello' }">anchor text</a>
</li>

期望的输出:<a href="page?position=hello"></a>

4

1 回答 1

1

老问题,但我刚刚遇到这个问题,因为没有答案,这是我想出的解决方案。处理密钥的简单中间人功能

getRouterParams (key: string, value: string) {
  return { [key]: value };
}

那么你的 HTML 看起来像

<a [routerLink]="['page']" [queryParams]="getRouterParams(Achievement.type, 'hello')">anchor text</a>

也适用于插值字符串,这就是我需要它的情况

<a [routerLink]="['page']" [queryParams]="getRouterParams('achievement__' + Achievement.type, 'hello')">anchor text</a>
于 2022-02-21T16:41:34.900 回答