我有一个动态创建表单的组件,因此我从服务器获取所有元数据,并且在模板中有一个ngFor来创建字段。这些属性都是与来自服务器的数据结果绑定的属性。在其中一种情况下,我有以下情况:
如果这样的硬代码
[filterParams]="{state:model.state_field}"
当我致电服务时,我可以将此filterParams用作对象并通过http请求进行发送,但是由于使用了服务器中的元数据,我实际上像这样
[filterParams]="metadata.filterParams"
在metadata.filterParams中,我有字符串“ {state:model.state}”,但是'state'的值不能是字符串,因为我使用的是模型值。
如何将元数据中的字符串转换为从模型中捕获值的对象,就像硬编码时的工作方式一样?
答案 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);
}
根据您的评论:当我意识到[filterParams]中使用“ {state:model.state_field}”进行硬编码
此处:[filterParams]="{state:model.state_field}"
""
不是字符串,引号仅用于绑定对象{state:model.state_field}