この問題が発生しています。私はAngularを使って、他のオブジェクトを内部に持つオブジェクトを取得するためにAPIを呼び出しています。問題は、それらが未定義として返されるため、それらのオブジェクトにアクセスできないことです。しかし、それらをコンソール(Google Chromeで)に記録すると、オブジェクトは実際にそこにあります。角2 - オブジェクトプロパティは未定義として返されますが、存在します。
これらは、私のコードの関連する断片である:
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によって提供される標準サービスですか? getのような明示的な型定義でそれを使用していない(...)これまでのところ私は少し驚いています。通常はget(...)。map(respone => response.json())を使用します。 –
Arg、これはエラーとは信じられません。どうもありがとうございました!私は 'Models.Survey.Wrapper 'を取得して*コンポーネント*にあるオブジェクトを変更して、これを' this.questionnaires = res [0] 'に変更したあなたの答えに従った:' this.questionnaires = res [ 0] .rootobject'。 – AMarquez94