gpt4 book ai didi

javascript - Angular 2 forEach 无法读取属性

转载 作者:可可西里 更新时间:2023-11-01 01:36:29 25 4
gpt4 key购买 nike

如何在数据 forEach() 中调用 this.firms

我知道如何在 Angular1 中执行此操作,但不知道如何在 Angular 2 中使用我当前的项目。

目前它在 forEach 之外工作正常,但在内部则不行。

 console.log(this.firms[0].name); // works
var a = 0;
console.log("--------------");

data.forEach(function (eachObj) {
console.log("firms check!");
console.log(this.firms); // not working
a = a + eachObj.income;
eachObj.name = this.firms[data.firmid - 1].name; // wont work
});

错误:

Cannot read property 'firms' of undefined

最佳答案

上下文 this 没有被注入(inject)到 forEach() 调用的匿名函数中。这就是 this 未定义的原因。

如果您使用的是 ES6 功能,则可以使用 arrow function,因为它会将上下文保留在函数中:

data.forEach(eachObj => {
console.log("firms check!");
console.log(this.firms);
a = a + eachObj.income;
eachObj.name = this.firms[data.firmid - 1].name;
});

或者直接绑定(bind)上下文:

data.forEach(function (eachObj) {
console.log("firms check!");
console.log(this.firms);
a = a + eachObj.income;
eachObj.name = this.firms[data.firmid - 1].name;
}.bind(this));

编辑:

zeroflagL 所述,您可以简单地将上下文传递给 forEach():

data.forEach(function (eachObj) {
console.log("firms check!");
console.log(this.firms);
a = a + eachObj.income;
eachObj.name = this.firms[data.firmid - 1].name;
}, this);

关于javascript - Angular 2 forEach 无法读取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43914703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com