TypeError:getPosition不是函数

时间:2017-10-24 23:17:31

标签: angular typescript

来自我的xx.model.ts:

export class ReferenceObject {
  name: string;
  position: Position;
  public getPosition() : Member {
    return this.position;
  }
}

export class Position {
  latitude: number;
  longitude: number;
}

从我的map.component.ts:

allObjects : ReferenceObject[] = [];

// allObjects is subscribed to an observable from xx.service.ts

private renderReferenceObjects() {
  var i = 0;
  this.allObjects.forEach ( nextObject => {
    this.objects[i] = this.viewer.entities.add ({
      name : nextObject.name,
      position : Cesium.Cartesian3.fromDegrees(nextObject.getPosition().longitude, nextObject.getPosition().latitude),
      billboard : {
        scale : 1.0,
        image : 'assets/img.png'
      }
    });
  }
});

有什么问题?为什么我无法访问此方法?它被设置为public,我可以引用例如nextObject.name,如上所示,没有任何问题。直到我到达我尝试访问该成员函数的行才会出现错误。

注意:我已经审核了代码并且看起来很正确,但可能存在拼写错误;在转录此代码时,我不得不做出很多修改。如果有一些主要的错字会阻止代码转换或运行,那肯定不是我的问题的原因,但请在评论中指出它并且我会纠正它。< / p>

编辑:用nextObject.position替换nextObject.getPosition()的所有实例都能很好地完成。我仍然非常好奇为什么会有效,但方法却没有。

2 个答案:

答案 0 :(得分:2)

您正在循环allObjects

this.allObjects.forEach ( nextObject => {

答案

唯一合乎逻辑的原因是allObjects 中至少有一个对象不是ReferenceObject 的实例。因此错误。

答案 1 :(得分:0)

我能够通过直接引用成员变量而不是使用getter来运行代码。具体来说,我用nextObject.position替换了nextObject.getPosition()的所有实例,但我仍然很好奇为什么调用该方法不起作用。