我正在使用Angular5。我认为这是一个简单的设置。我有一个组件注入一个调用API的SignupService。如果没有出错,一切正常。但是如果远程服务器返回错误(特别是我正在处理的是500,但任何错误应该类似)我想在客户端适当地处理它。不幸的是,我一直在catch处理程序中得到这个无用的错误:
“您提供了'未定义',其中包含预期的流。您可以提供 一个Observable,Promise,Array或Iterable。“
我觉得我缺少一些基本的东西,因为我的错误处理代码看起来与我在网上看到的其他代码示例类似。有人能指出我正确的方向吗?谢谢!
摘自signup.service.ts
public signup(value: SignupForm): Observable<TokenResponse | any> {
return this.http.post<TokenResponse>(
`${environment.AUTHENTICATION_API}/p/signup`,
value,
this.httpOptions
)
}
摘自signup.component.ts:
public signup(value: SignupForm): void {
if (this.myForm.valid && !this.submitted) {
this.submitted = true;
// submit to API
this.service.signup(value)
.first()
.finally(() => {
this.submitted = false;
})
.subscribe(data => {
// handle session/token stuff, this works fine.
}, e => {
console.log('got error', e);
});
}
}
答案 0 :(得分:0)
好吧,因为我预计这最终是一个愚蠢的事情,我有一个HTTP拦截器设置,如果500响应我没有正确返回Observable.throw(错误)回到调用者。添加使一切正常。