我在.ts中有这个方法:
search(event) {
this.autocompletedata.forEach(function(entry) {
this.result.push(entry['items'].filter(a=>a['item']));
});
console.log(this.result,'result');
}
但我不能使用this.result
,但我不知道为什么。当我声明let result
我可以使用时,但是这个结果我得到了这个错误。有什么建议吗?不知怎的this.result
在方法内部看不到什么?
答案 0 :(得分:3)
问题是你在forEach中创建了一个privat函数。此功能的范围不同。如果您使用箭头功能,则范围保持不变,您可以使用this.result
。
search(event) {
this.autocompletedata.forEach((entry) => {
this.result.push(entry['items'].filter(a=>a['item']));
});
console.log(this.result,'result');
}
答案 1 :(得分:2)
this.
在function(entry) {
如果您将其更改为
(entry) => {
你会得到理想的行为。
另见https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions