当我尝试将JSON推入数组时,它向我显示错误 ERROR错误:未捕获(承诺):TypeError:无法读取未定义的属性'CountryArr',这是下面的代码。
CountryArr: any[] = [];
async ngOnInit() {
await csc.getAllCountries().forEach(function (index) {
this.CountryArr.push({ "value": index.id, "name": index.name }); //shows error here
});
//this.CountryArr.push({ "value": "0", "name": "-- Select Country --" }); //it works
//this.CountryArr.push({ "value": "0", "name": "-- Select Countryasdadasd --" }); //it works
console.log(this.CountryArr);
}
我尝试使用
this.CountryArr.push({ "value": "0", "name": "-- Select Country --" });
this.CountryArr.push({ "value": "0", "name": "-- Select Countryasdadasd --" });
它可以正常工作并在控制台上显示给我,但是在forEach
里面可以看到错误。
答案 0 :(得分:0)
没有CountryArr是this
对象,因为在function
方法中使用forEach
关键字时上下文已更改。因此,您需要将其切换为箭头功能。箭头函数不会创建新的context(scope),因此,每个函数现在都应该工作。 Here是有关JavaScript上下文的详细说明,以及它如何与常规函数和箭头函数一起使用。
CountryArr: any[] = [];
async ngOnInit() {
await csc.getAllCountries().forEach((index) => {
this.CountryArr.push({ "value": index.id, "name": index.name })
});
console.log(this.CountryArr);
}