将值转换为字符串对象以进行属性绑定

时间:2019-11-06 13:25:56

标签: angular property-binding

我有一个动态创建表单的组件,因此我从服务器获取所有元数据,并且在模板中有一个ngFor来创建字段。这些属性都是与来自服务器的数据结果绑定的属性。在其中一种情况下,我有以下情况: 如果这样的硬代码
[filterParams]="{state:model.state_field}"
当我致电服务时,我可以将此filterParams用作对象并通过http请求进行发送,但是由于使用了服务器中的元数据,我实际上像这样
[filterParams]="metadata.filterParams"
在metadata.filterParams中,我有字符串“ {state:model.state}”,但是'state'的值不能是字符串,因为我使用的是模型值。

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

1 个答案:

答案 0 :(得分:0)

您需要将metadata.filterParams: "{state:model.state_field}" 转换为 metadata.filterParams: {state:model.state_field}

所以尝试这样:

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

Working Demo

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

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

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