对象在DOM上为空白,分配给全局变量时出错

时间:2018-09-23 18:46:59

标签: javascript angular typescript

我有我正在遍历的对象,但是将其分配给全局健康变量时却出错。

这是我的全局变量

    public health: any;

    constructor(private forumservice: ForumService) {}


      ngOnInit() {
        this.forumservice.getHealths().subscribe(
          healths => {
            Object.keys(healths).forEach(function (key) {
              var topics = healths[key];

到目前为止,我一直在获取所需的所有数据,但是当我将结果传递给全局变量时,会报错。

              this.health = topics.Topics;

然后我尝试在此处声明另一个变量,例如const health,但它不会在DOM上呈现,只是显示空白

            });
            console.log(this.health);
          },
          errmess => (this.errMess = errmess)
        );

1 个答案:

答案 0 :(得分:1)

使用箭头功能的ES6功能是因为它没有像传统的功能表达式一样的this。因此,您需要像这样重写迭代:

Object.keys(healths).forEach((key) => {
  ...
  this.health = topics.Topics;
  ...
}
  

直到箭头函数,每个新函数都定义了自己的此值(根据函数的调用方式,在构造函数中为新对象,在严格模式函数调用中未定义,如果该函数被称为“对象方法”等)。事实证明,采用面向对象的编程风格并不理想。

有关箭头功能的更多信息 here