Angular 将值转换为属性绑定的字符串对象
我有一个组件来动态创建表单,因此我从服务器获取所有元数据,并且在模板中有一个ngFor来创建字段。这些属性都是来自服务器的数据的结果的属性绑定。其中一种情况是: 如果像这样的硬代码Angular 将值转换为属性绑定的字符串对象,angular,property-binding,Angular,Property Binding,我有一个组件来动态创建表单,因此我从服务器获取所有元数据,并且在模板中有一个ngFor来创建字段。这些属性都是来自服务器的数据的结果的属性绑定。其中一种情况是: 如果像这样的硬代码 [filterParams]=“{state:model.state_field}” 当我调用服务时,我可以使用这个filterParams作为对象并通过http请求发送,但我使用服务器的元数据,实际上我是这样编码的 [filterParams]=“metadata.filterParams” 在metadata.f
[filterParams]=“{state:model.state_field}”
当我调用服务时,我可以使用这个filterParams作为对象并通过http请求发送,但我使用服务器的元数据,实际上我是这样编码的
[filterParams]=“metadata.filterParams”
在metadata.filterParams中,我有字符串“{state:model.state}”,但是'state'的值不能是字符串,因为我使用模型值
如何将元数据中的字符串转换为从模型中捕获值的对象,就像硬编码时的工作方式一样?您需要转换
metadata.filterParams:“{state:model.state\u field}”
到metadata.filterParams:{state:model.state\u 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\u field}
您需要转换元数据.filterParams:“{state:model.state\u field}”
到元数据.filterParams:{state:model.state\u 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\u field}
console.log(metadata)
并显示输出我更改了名称以询问问题,但在metadata.filterParams我有值metadata.filterParams:{state:model.state\u field}”
我还更新了问题。是否在引号内<代码>“”?是的,因为它来自json返回。我试图以json对象的形式返回,但当我意识到在[filterParams]
中使用“{state:model.state\u field}”进行硬编码时,我将返回更改为字符串。console.log(metadata)
并显示输出,我更改了名称以询问问题,但是在metadata.filterParams中,我有值metadata.filterParams:“{state:model.state\u field}”
我也更新了这个问题。在引号中<代码>“”
?是的,因为它来自json返回。我试图以json对象的形式返回,但当我意识到在[filterParams]
中使用“{state:model.state\u field}”进行硬编码时,我将返回更改为字符串。这不是我试图做的。我确实需要使[filterParams]
具有值“{state:model.state\u field}”
(带双引号)和从元数据接收的值,因为对我的端点的每个请求都将从模型中获取state_字段的值,并且如果更改状态,将转换为类似state=NY
或state=FL
的查询字符串。我正在使用一个框架为我创建字段,因此我需要以这种方式传递筛选器的值。@在您的示例中,在上一个console.log()之后,如果您执行model.state\u field=2代码>console.log(this.metadata)代码>值仍然为1“是”,这很明显,因为在此之前字符串已经计算过了。我正在使用名为Portinari UI()的库,我的问题与名为lookup的组件有关。即使我能看到他们的源代码,我也不知道如何传递过滤器表达式。这不是我想要做的。我确实需要使[filterParams]
具有值“{state:model.state\u field}”
(带双引号)和从元数据接收的值,因为对我的端点的每个请求都将从模型中获取state_字段的值,并且如果更改状态,将转换为类似state=NY
或state=FL
的查询字符串。我正在使用一个框架为我创建字段,因此我需要以这种方式传递筛选器的值。@在您的示例中,在上一个console.log()之后,如果您执行model.state\u field=2代码>console.log(this.metadata)代码>值仍然为1“是”,这很明显,因为在此之前字符串已经计算过了。我正在使用名为Portinari UI()的库,我的问题与名为lookup的组件有关。即使我能看到他们的源代码,我也不知道如何传递过滤器表达式。