2017-08-24 138 views
1

我似乎无法弄清楚这件事情...我从api获取数据并将其存储为任何[]。我试图得到这样的数据...Angular4和TypeScript属性在类型上不存在[]

this.data.results[i].datas[j].dataType 

但我得到的错误属性结果不存在类型任何[]。我试着看过很多其他问题和答案,但我似乎无法弄清楚。

(我应该只是创建一个数据对象,而不是分配数据给任何[],将它分配给对象?) 感谢您的帮助!

+0

请问您可以放更多代码为了帮助你? – DMCISSOKHO

+0

而确切的和完整的错误信息。还要添加打印值'console.log(...)'完全返回的值。你提到'任何[]',但你的代码并不显示你如何使用它。 –

+0

您是否收到打字稿编译错误或运行时错误? – FabianTe

回答

1

你应该改变的this.data的类型定义:

data: {results?: any[]} = {}; 
+0

谢谢你的工作! – Mark

+0

@PierreDuc我有一个动态表单,并且在编译期间我不知道任何表单控件,在编译时我得到了ex:属性'name'在类型'{}'上不存在。任何解决方案,这种类型的表单?,我只有在与'aot'编译时出现这个错误 –

+0

改变你的数据输入到'any',或者改成'{name ?: string}' – PierreDuc

0

我总是(如果可能)至少声明一个接口是这样的:

interface IDataset { 
    dataType: string; 
    value: string; 
    // Whatevery your dataset holds 
} 

interface IResultset { 
    datas: IDataset[9] 
} 

interface IData { 
    results: IResultset[]; 
} 

class SomeClass { 
    data: IData[]; 

    someFunction() { 
     this.data.results[i].datas[j].dataType = "whatever"; 
    } 
} 

你得到智能感知这样您的数据必须以一种合理的方式来构造数据,并且可以在客户端和服务器端使用这些接口(如果您也在服务器上工作)

+1

是的我知道,我真的应该声明对象/接口。但是我的固执已经开始了,我想用这种方式来解决它:现在我已经这样做了,我会创建对象哈哈,我只是想获得胜利的感觉 – Mark

相关问题