Angular 更新后如何使用管道编写rxjs捕获和映射函数

Angular 更新后如何使用管道编写rxjs捕获和映射函数,angular,typescript,rxjs,Angular,Typescript,Rxjs,自从rxjs更新后,我的代码就不再工作了。我意识到我需要使用管道,而不是捕捉错误,但我仍然缺少一些东西。请参阅下面的代码。感谢你的帮助 public getAllTodos(): Observable<Todo[]> { return this.http.get(API_URL + '/todos') .pipe( map(response => { const todos = response.json(); ret

自从rxjs更新后,我的代码就不再工作了。我意识到我需要使用管道,而不是捕捉错误,但我仍然缺少一些东西。请参阅下面的代码。感谢你的帮助

  public getAllTodos(): Observable<Todo[]> {
    return this.http.get(API_URL + '/todos')
    .pipe(
      map(response => {
       const todos = response.json();
       return todos.map((todo) => new Todo(todo));
      }),
      catchError(err => {
        this.handleError(err);
      })
   );
  }



    private handleError (error: Response | any) {
    console.error('ApiService::handleError', error);
    return Observable.throw(error);
  }
public getAllTodos():可观察{
返回此.http.get(API_URL+'/todos')
.烟斗(
映射(响应=>{
const todos=response.json();
返回todo.map((todo)=>newtodo(todo));
}),
catchError(err=>{
这个.handleError(err);
})
);
}
私有句柄错误(错误:响应|任意){
console.error('ApiService::handleError',error);
返回可观察抛出(错误);
}

欢迎来到stackoverflow

有了更新的HttpClient模块,我们不再需要使用.json语法。大概是这样的:

  public getAllTodos(): Observable<Todo[]> {
    return this.http.get<Todo[]>(API_URL + '/todos')
    .pipe(
      catchError(err => {
        this.handleError(err);
      });
  }
public getAllTodos():可观察{
返回此.http.get(API_URL+'/todos')
.烟斗(
catchError(err=>{
这个.handleError(err);
});
}
或者,如果仍需要映射到实际对象:

  public getAllTodos(): Observable<Todo[]> {
    return this.http.get<Todo[]>(API_URL + '/todos')
    .pipe(
      map(todos => todos.map((todo) => new Todo(todo))),
      catchError(err => {
        this.handleError(err);
      })
   );
  }
public getAllTodos():可观察{
返回此.http.get(API_URL+'/todos')
.烟斗(
map(todos=>todos.map((todo)=>newtodo(todo)),
catchError(err=>{
这个.handleError(err);
})
);
}

感谢您的快速回答。不幸地抛出错误“预期为0类型参数,但得到1”。好的,找到错误,需要以这种方式导入映射:从“rxjs/operators”导入{Map};