在MyComponent.ts中,我可以使用此代码:
this.testService.saveChanges(testTypesToSave, this.schoolyearId,
this.currentSubject.id, this.currentSchoolclass.id).subscribe(testTypes => {
let testTypeViewModels = testTypes.map(t => new AssignedTestType(t));
this.testTypes.push(...testTypeViewModels);
});
testTypes获取错误时,.map()方法不存在:
Property 'map' does not exist on type 'Response'.
这是对的!
有效负载位于respose.json()方法的后面,但我不想在http服务和组件中调用该方法TWICE。
如何完成服务器调用:
saveChanges(testTypes: AssignedTestType[], schoolyearId: number, subjectId: number, schoolclassId: number): Observable<Response> {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let dto = {
testTypes: testTypes.map(t =>
({ name: t.name, weight: t.weight, testTypeId: t.id })),
schoolyearId: schoolyearId,
subjectId: subjectId,
schoolclassId: schoolclassId// put this prop on serverside too
};
return this.http.post('/api/testtypes', dto, options).map(response => response.json());
那么如何在不第二次调用.json()的情况下获取组件中的数据,并且我应该能够在响应有效负载上应用.map()方法?!
更新
在编码时间内的响应。显示response.json(),但在运行时,响应是我的testTypes数组。
这意味着当我给它一个类型时,我必须可以对响应应用.map()但是什么类型?它的无类型来自服务器。
我正在使用:
"rxjs": "^5.0.0-beta.12",
"@angular/common": "^2.0.0",