Angular 将值转换为属性绑定的字符串对象

Angular 将值转换为属性绑定的字符串对象,angular,property-binding,Angular,Property Binding,我有一个组件来动态创建表单,因此我从服务器获取所有元数据,并且在模板中有一个ngFor来创建字段。这些属性都是来自服务器的数据的结果的属性绑定。其中一种情况是: 如果像这样的硬代码 [filterParams]=“{state:model.state_field}” 当我调用服务时,我可以使用这个filterParams作为对象并通过http请求发送,但我使用服务器的元数据,实际上我是这样编码的 [filterParams]=“metadata.filterParams” 在metadata.f

我有一个组件来动态创建表单,因此我从服务器获取所有元数据,并且在模板中有一个ngFor来创建字段。这些属性都是来自服务器的数据的结果的属性绑定。其中一种情况是: 如果像这样的硬代码
[filterParams]=“{state:model.state_field}”

当我调用服务时,我可以使用这个filterParams作为对象并通过http请求发送,但我使用服务器的元数据,实际上我是这样编码的
[filterParams]=“metadata.filterParams”

在metadata.filterParams中,我有字符串“{state:model.state}”,但是'state'的值不能是字符串,因为我使用模型值


如何将元数据中的字符串转换为从模型中捕获值的对象,就像硬编码时的工作方式一样?

您需要转换
metadata.filterParams:“{state:model.state\u field}”
metadata.filterParams:{state:model.state\u field}

所以试着这样做:

 yourFunction() {
    let model = {
      state_field: 1
    };
    var eventstring = this.metadata.filterParams.replace(/"/g, "");
    this.metadata.filterParams = eval(eventstring)
    console.log(this.metadata);
  }

从您的评论中:当我意识到在[filterParams]中使用“{state:model.state_field}”进行硬编码时

此处:
[filterParams]=“{state:model.state_field}”


不是字符串,引号仅用于绑定对象
{state:model.state\u field}
您需要转换
元数据.filterParams:“{state:model.state\u field}”
元数据.filterParams:{state:model.state\u field}

所以试着这样做:

 yourFunction() {
    let model = {
      state_field: 1
    };
    var eventstring = this.metadata.filterParams.replace(/"/g, "");
    this.metadata.filterParams = eval(eventstring)
    console.log(this.metadata);
  }

从您的评论中:当我意识到在[filterParams]中使用“{state:model.state_field}”进行硬编码时

此处:
[filterParams]=“{state:model.state_field}”


不是字符串,引号仅用于绑定对象
{state:model.state\u field}

console.log(metadata)
并显示输出我更改了名称以询问问题,但在metadata.filterParams我有值
metadata.filterParams:{state:model.state\u field}”
我还更新了问题。是否在引号内<代码>“”?是的,因为它来自json返回。我试图以json对象的形式返回,但当我意识到在
[filterParams]
中使用
“{state:model.state\u field}”进行硬编码时,我将返回更改为字符串。
console.log(metadata)
并显示输出,我更改了名称以询问问题,但是在metadata.filterParams中,我有值
metadata.filterParams:“{state:model.state\u field}”
我也更新了这个问题。在引号中<代码>“”
?是的,因为它来自json返回。我试图以json对象的形式返回,但当我意识到在
[filterParams]
中使用
“{state:model.state\u field}”进行硬编码时,我将返回更改为字符串。这不是我试图做的。我确实需要使
[filterParams]
具有值
“{state:model.state\u field}”
(带双引号)和从元数据接收的值,因为对我的端点的每个请求都将从模型中获取state_字段的值,并且如果更改状态,将转换为类似
state=NY
state=FL
的查询字符串。我正在使用一个框架为我创建字段,因此我需要以这种方式传递筛选器的值。@在您的示例中,在上一个console.log()之后,如果您执行
model.state\u field=2
console.log(this.metadata)值仍然为1“是”,这很明显,因为在此之前字符串已经计算过了。我正在使用名为Portinari UI()的库,我的问题与名为lookup的组件有关。即使我能看到他们的源代码,我也不知道如何传递过滤器表达式。这不是我想要做的。我确实需要使
[filterParams]
具有值
“{state:model.state\u field}”
(带双引号)和从元数据接收的值,因为对我的端点的每个请求都将从模型中获取state_字段的值,并且如果更改状态,将转换为类似
state=NY
state=FL
的查询字符串。我正在使用一个框架为我创建字段,因此我需要以这种方式传递筛选器的值。@在您的示例中,在上一个console.log()之后,如果您执行
model.state\u field=2
console.log(this.metadata)值仍然为1“是”,这很明显,因为在此之前字符串已经计算过了。我正在使用名为Portinari UI()的库,我的问题与名为lookup的组件有关。即使我能看到他们的源代码,我也不知道如何传递过滤器表达式。