我遇到此問題。我正在與Angular合作,並調用一個API來獲取其中有其他對象的對象。問題是我無法訪問這些對象,因爲它們以未定義的方式返回。但是,將它們記錄在控制檯(使用Google Chrome)時,對象實際上就在那裏。Angular 2 - 對象屬性返回爲undefined,但它們存在
這是我的代碼的相關片段:
questionnaire.component.ts
export class QuestionnaireComponent extends BaseComponent {
questionnaires: Models.Survey.Rootobject;
...
ngOnInit() {
...do stuff...
Observable.forkJoin(this.service.getAllQuestionnaires())
.subscribe(res => {
this.questionnaires = res[0];
console.log(this.questionnaires);
console.log(res[0]);
console.log(this.questionnaires.questionnaireItems);
this.numberOfQuestionnaires = this.questionnaires.questionnaireItems.length;
...do more stuff...
});
}
...
}
questionnaire.service.ts
...code...
getAllQuestionnaires() {
return this.http.get<Models.Survey.Rootobject>('/api/v1/xmlquestionnaires').map(res => res[0]);
}
Survey.ts
declare namespace Models.Survey {
...more interfaces...
export interface QuestionnaireItem {
id: string;
name: string;
order: string;
description: string[];
finalText: string[];
questionGroups: QuestionGroup[];
questions: Question[];
toRandomize: string;
}
export interface Rootobject {
questionnaireItems: QuestionnaireItem[];
}
export interface Wrapper {
rootobject: Rootobject;
}
}
而 「的console.log(X)」 的結果是這些:
QuestionnaireItems是在對象,而是直接訪問到它會返回未定義。
你知道什麼是問題,我該如何解決它?
非常感謝!
我認爲它是返回'Rootobject',因爲這樣做會顯示此錯誤:http://imgur.com/a/YnCdH – AMarquez94
「http」是由angular2提供的標準服務?I沒有像get一樣使用顯式類型定義(...)到目前爲止,我對此有點驚訝。通常我使用get(...)。map(respone => response.json())。 –
Arg,不敢相信這是錯誤。非常感謝你!我跟着你的回答改變了我得到的'的對象,並在*組件*中改變了這個:'this.questionnaires = res [0]'this this:'this.questionnaires = res [ 0] .rootobject'。 –
AMarquez94