Angular 更新后如何使用管道编写rxjs捕获和映射函数
自从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
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};