TypeError:尽管已定义,但无法读取未定义的属性“ xyz”

时间:2019-04-21 19:32:08

标签: angular typescript

我的cuisines文件中有一个名为component.ts的变量,其声明如下:

component.ts

export class xyzComponent implements OnInit {

  constructor(private route:Router,private activateRoute:ActivatedRoute,private http:HttpService) {

}

  cuisines:any = {};

ngOnInit() {

      this.activateRoute.paramMap.subscribe(params => {

        this.http.getResortByName(params.get('resort')).subscribe(dataRes => {
          console.log(params.get('resort'));
          this.resort = dataRes[0];
          Object.keys(this.resort.food).forEach(function(key){
              this.cuisines.push({name : key, cost: parseInt(this.resort.food[key]) });
          })

      })
    })

  }

当我尝试从cuisines内部访问ngOnInit()

TypeError: Cannot read property 'cuisines' of undefined

错误。我尝试了几件事,但似乎没有任何效果。

我移动了cuisines的声明,删除了this,尝试了一些其他操作,但是没有任何作用。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

我首先将以下内容定义为数组。

public cuisines:any = [];

然后像这样利用数组函数。

Object.keys(this.resort.food).forEach((key) => 
{
    this.cuisines.push({ name : key, cost: parseInt(this.resort.food[key])});
});