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