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



我有一个组件来动态创建我的表单,所以我从服务器获取所有元数据,并且我的模板中有一个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}

最新更新