Http 角度2-检查来自订阅的服务器错误
我觉得这个场景应该在Angular 2文档中,但我在任何地方都找不到 下面是一个场景Http 角度2-检查来自订阅的服务器错误,http,angular,subscribe,Http,Angular,Subscribe,我觉得这个场景应该在Angular 2文档中,但我在任何地方都找不到 下面是一个场景 提交在服务器上无效的表单(创建对象) 服务器返回一个400错误请求,表单上显示错误 订阅返回后,我想检查一个错误变量或其他东西(即,如果没有错误>则路由到新创建的详细信息页面) 我想象它是这样工作的: this.projectService.create(project) .subscribe( result => console.log(result), erro
this.projectService.create(project)
.subscribe(
result => console.log(result),
error => {
this.errors = error
}
);
}
if (!this.errors) {
//route to new page
}
我对Angular 2很陌生,所以这可能是因为我不了解可观测物体是如何工作的。我对在表单上显示这些数据没有问题,但我不知道如何在ts组件中查看这些数据。我真的只想检查http创建的成功/失败。如相关RxJS文档中所述,如果没有错误,可以使用在完成时调用的第三个参数 供参考:
[onNext]
(函数
):为可观察序列中的每个元素调用的函数[onError]
(函数
):在可观察序列异常终止时调用的函数[onCompleted]
(函数
):在可观察序列正常终止时调用的函数onCompleted
回调中处理路由逻辑,因为它将在正常终止时被调用(这意味着调用它时不会有任何错误)
作为旁注,还有一个在完成时调用的,不管调用的成功/失败。如果您总是希望在HTTP请求之后执行某些逻辑,而不管结果如何(例如,出于日志记录目的或某些UI交互,例如显示模式),那么这可能会有所帮助
Rx.Observable.prototype.finally(动作)
在源可观察序列正常或异常终止后调用指定的操作
例如,以下是一个基本示例:
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/finally';
// ...
this.httpService.getRequest()
.finally(() => {
// Execute after graceful or exceptionally termination
console.log('Handle logging logic...');
})
.subscribe (
result => {
// Handle result
console.log(result)
},
error => {
this.errors = error;
},
() => {
// No errors, route to new page
}
);
您可以通过以下方法实现
this.projectService.create(project)
.subscribe(
result => {
console.log(result);
},
error => {
console.log(error);
this.errors = error
}
);
}
if (!this.errors) {
//route to new page
}
在我找到的所有关于观测值错误处理的答案中,这是最好的一个。非常感谢。
this.projectService.create(project)
.subscribe(
result => {
console.log(result);
},
error => {
console.log(error);
this.errors = error
}
);
}
if (!this.errors) {
//route to new page
}