是否可以在 routerLink 的 queryParams 中使用常量作为属性名称?

问题描述

我正在尝试导航到当前页面并更改/添加查询参数“categoryId”。如果我这样做:

<a
      [routerLink]=""
      [queryParams]="{ categoryId: category!.id }"
      queryParamsHandling="merge"
>

它工作正常,但我有一个用于查询参数名称的常量,这样如果我想更改它,我就不必找到每个实例。

在 component.ts 中,我有属性

categoryIdQueryParamName = QueryParamNames.CATEGORY_ID;

我试过了:

<a
  [routerLink]=""
  [queryParams]="{ {{'"' + categoryIdQueryParamName + '"' }}: category!.id }"
  queryParamsHandling="merge"
>

看了之后:microsoft docs, 我试过了:

<a
  [routerLink]=""
  [queryParams]="{ [categoryIdQueryParamName]: category!.id }"
  queryParamsHandling="merge"
>

但是,我仍然收到编译错误。如果可能,执行此操作的正确方法是什么?旁注,我知道我可以使用 (click) 以编程方式执行此操作,但我正在使用 <a [routerLink]> 来获得能够右键单击并在新选项卡中打开的好处。

解决方法

最简洁的方法是在 ts 中进行

public get queryParams() {
    const p = {};
    p[QueryParamNames.CATEGORY_ID] = category!.id;
    return p;
}

<a [routerLink]="" [queryParams]="queryParams" queryParamsHandling="merge" >

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...