【发布时间】:2018-02-17 18:02:04
【问题描述】:
我有一个应用程序,我想在其中将 json 转换为 Angular 中的数组。 映射正确完成,但是,我的数据不是我的对象的实例,因此,我在该类中创建的任何方法/函数都不能被调用。 这是我正在使用的代码
export class Armor {
name: string;
listOfUpgradeMaterials: Material[];
get externalLink(): string {
return this.name.replace(" ", "_");
}
这就是我的转换方式
// result is a Json value with a array of armor
var list = <Armor[]>result;
console.log(list[0].externalLink); //does not work
console.log(list[0].name);//works
我尝试使用自定义地图,但如果这样做,我的子属性“材料”不会被实例化,因此它也不起作用
this.list = _.map(this.list).map(function (x) {
let armor: Armor = Object.assign(new Armor, x);
return armor;
});
即使使用多个级别的对象,解决此问题的整体解决方案是什么?
谢谢
【问题讨论】:
-
您是否尝试过使用此关键字,例如:this.list[0].externalLink
-
console.log(result.json());的输出是什么?尚不清楚result来自哪里。 -
list[0]是具有name属性的对象吗?我不完全确定类型断言是如何工作的,但我希望list.externalLink可以工作,但list[0].externalLink不能工作,因为后者是一个不同的对象而不是Armor对象。如果是这种情况,那么如果您将name: string;替换为banana: string;,我希望list[0].banana会以与externalLink相同的方式失败。
标签: angular typescript