我对angular 2 http服务非常困惑。
我在asp.net上有一个非常简单的模型:
public class Question
{
public int QuestionId { get; set; }
public string Value { get; set; }
public ICollection<Answer> Answers {get; set; }
}
public class Answer
{
public int AnswerId { get; set; }
public string Value { get; set; }
[JsonIgnore]
...
}
并且使用此模型的对象进行响应看起来像这样:
[{"questionId":0,"value":"qqq","answers":
[{"answerId":25,"value":"qwerty"}]},
{"questionId":1,"value":"eee","answers":
[{"answerId":26,"value":"qwerty2"}]}]
所以,我已经看过这个json并将这个模型复制到typescript类:
export class Question {
questionId: number;
value: string;
answers: Array<Answer>;
}
export class Answer {
answerId: number;
value: string;
}
然后我写了httpservice:
GetQuestions(): Observable<Question[]> {
return this.http.get("Api/GetAllQuestions")
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body || {};
}
我试图使用它:
ngOnInit() {
this.questionService.GetQuestions()
.subscribe(
questions => this.questions = questions,
error => this.errorMessage = <any>error);
}
看起来我的问题数组在执行此方法后以某种方式初始化。问题数组的字符串化看起来像这样:
[{"questionId":0,"value":"qqq","answers":
[{"answerId":25,"value":"qwerty"}]},
{"questionId":1,"value":"eee","answers":
{"answerId":26,"value":"qwerty2"}]}]
但如果我尝试使用它
<div class="panel panel-default" *ngFor="let q of questions">
<label>
id: {{q.questionId}} val: {{value}}
</label>
<div *ngFor="let a of q.answers">
<label>
id: {{a.answerId}} value: {{a.value}}
</label>
</div>
</div>
questuin.length
是2(预期),但questions[0].questionId
没有给我任何东西。我做错了什么?