2017-08-24 131 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

相關問題