财产'结果'类型' void'上不存在。 ?

时间:2017-09-05 11:21:36

标签: angular

我在.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在方法内部看不到什么?

2 个答案:

答案 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