【发布时间】:2020-09-21 22:12:34
【问题描述】:
我在使用 Angular 7 应用程序时遇到错误无法读取未定义的属性名称“fieldnamefilter”过滤数据?
过滤器名称我根据变量fieldnamefilter动态获取
下面的代码在 this.fieldnamefilter 上给出错误:
contentBody:any[];
fieldnamefilter:any;
console.log("data values : " + this.fieldnamefilter )
//result is data values : onlineURL on console log
// error display on line below filter data[0].this.fieldnamefilter
this.contentBody = data.filter(item =>item != data[0].this.fieldnamefilter);
但如果我将它用作 data[0].onlineURL 如下所示;
//working when use field name direct data[0].onlineURL
this.contentBody = data.filter(item =>item != data[0].onlineURL);
数据的数据类型为 any[]; 那么如何解决这个问题;
我尝试更新帖子:
console.log(this.fieldnamefilter it give me onlineURL
console.log(data[0][this.fieldnamefilter] it give me N/A
【问题讨论】:
-
this 关键字保留在类变量/方法中,如果您的数据数组对象中有一个名为 fieldnamefilter 的字段,您可以像 data[0].fieldnamefilter 一样使用它,方法是在中间删除它。
-
当使用字段名直接它工作但在我的情况下,我将过滤器名称存储在变量上,因为它不固定并且依赖于数据库中存在的数据
-
那么如何在数据[0]上使用变量名。变量有过滤器
-
好的,问题中并不清楚,如果您在该变量中存储一个字段,您可以像这样使用它:data[0][this.fieldnamefilter]
-
另外,使用 any for 类型也不是一个好习惯,你应该为每种类型都有模型,它使调试变得容易得多。
标签: javascript typescript angular7 angular-directive angular-components