Angular 可观察类型<;回应>;不可分配给可观察类型<;列表<;待办事项>&燃气轮机;

Angular 可观察类型<;回应>;不可分配给可观察类型<;列表<;待办事项>&燃气轮机;,angular,typescript,system.reactive,rxjs,Angular,Typescript,System.reactive,Rxjs,我正试图构建一个应用程序,但我得到了一个TypeScript错误,我想解释一下什么是错误的。就我所知,我正在做我该做的事 以下是我迄今为止编写的代码: import {Injectable,Inject} from '@angular/core'; import {Http,Headers,URLSearchParams, Response} from '@angular/http'; import {List, Record} from 'immutable'; import {Observa

我正试图构建一个应用程序,但我得到了一个TypeScript错误,我想解释一下什么是错误的。就我所知,我正在做我该做的事

以下是我迄今为止编写的代码:

import {Injectable,Inject} from '@angular/core';
import {Http,Headers,URLSearchParams, Response} from '@angular/http';
import {List, Record} from 'immutable';
import {Observable} from "rxjs/Observable";


const TodoRecord = Record({
    id: 0,
    description: "",
    completed: false
});

export class Todo extends TodoRecord {

    id:number;
    description:string;
    completed: boolean;

    constructor(props: any) {
        super(props);
    }

}

@Injectable()

export class TodoBackendService {
    constructor(private http: Http){
        this.http = http;
    }

    getAllTodos(){
        return this.http.get("/todo");
    }

    saveTodo(newTodo: Todo): Observable<List<Todo>> {
        var headers = new Headers();
        headers.append("Content-Type", "application/json; chartset=utf-8");

        return this.http.post("/todo", JSON.stringify(newTodo.toJS()),{headers}).share();
    }
}
这是我在VS代码中得到的错误消息:


任何帮助都将不胜感激。

留言说明了一切。http post返回一个
可观察的
,而不是
可观察的


您需要使用
map()。假设response.json()返回ToDo模型数组

saveTodo(newTodo: Todo): Observable<List<Todo>> {
    var headers = new Headers();
    headers.append("Content-Type", "application/json; chartset=utf-8");

    return this.http.post("/todo", JSON.stringify(newTodo.toJS()),{headers})
        .map((response: Response) => (<ToDo[]>response.json())).share();
}
saveTodo(newTodo:Todo):可观察{
var headers=新的headers();
append(“内容类型”、“应用程序/json;图表集=utf-8”);
返回this.http.post(“/todo”,JSON.stringify(newTodo.toJS()),{headers})
.map((response:response)=>(response.json()).share();
}

好吧,这条消息说明了一切。http post返回的是可观察的,而不是可观察的。您需要使用map()从返回的响应创建一个列表。写一个答案,我会接受它作为正确的答案。给你自己一些分数!!类型“Observable”上不存在属性“map”。
saveTodo(newTodo: Todo): Observable<List<Todo>> {
    var headers = new Headers();
    headers.append("Content-Type", "application/json; chartset=utf-8");

    return this.http.post("/todo", JSON.stringify(newTodo.toJS()),{headers})
        .map((response: Response) => (<ToDo[]>response.json())).share();
}