1

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

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

4

1 回答 1

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);
  }

工作演示

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

这里 :[filterParams]="{state:model.state_field}"

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

于 2019-11-06T14:08:40.960 回答