无法在Response上应用rxjs .map()方法

时间:2016-12-13 15:58:35

标签: angular rxjs observable

在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",

0 个答案:

没有答案