来自我的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()的所有实例都能很好地完成。我仍然非常好奇为什么会有效,但方法却没有。
答案 0 :(得分:2)
您正在循环allObjects
:
this.allObjects.forEach ( nextObject => {
唯一合乎逻辑的原因是allObjects
中至少有一个对象不是ReferenceObject
的实例。因此错误。
答案 1 :(得分:0)
我能够通过直接引用成员变量而不是使用getter来运行代码。具体来说,我用nextObject.position替换了nextObject.getPosition()的所有实例,但我仍然很好奇为什么调用该方法不起作用。