答案 0 :(得分:9)
我们也遇到了同样的问题。最后,结果证明是括号不匹配的问题。我们使用了switchMap运算符和catcherror运算符。但是因为我们的括号是错误的。 catcherror运算符很有趣地被用作switchMap(结果选择器)的第二个参数,尽管该参数仍然可以编译。因此,请仔细检查括号。
答案 1 :(得分:3)
我的Web应用程序中存在相同的错误,直到意识到要测试升级rxjs版本后我才将其修复,因为我的版本为6.0.0,目前已更改为最后一个版本6.3。 .2解决了我的问题。 总而言之,这是rxjs的第一个版本中的一个错误,我们应该对其进行更多测试,但是到目前为止还不错。 希望对您有帮助。
答案 2 :(得分:1)
对我来说,我使用的是catchError
,而没有tap
错误:
import {catchError} from 'rxjs/operators';
this.http.get(url, options).pipe(
catchError(
(err: HttpErrorResponse) => {
// Do Stuff
}
)
);
正确:
import {catchError, tap} from 'rxjs/operators';
this.http.get(url, options).pipe(
tap(
() => {},
catchError(
(err: HttpErrorResponse) => {
// Do Stuff
}
)
)
);
答案 3 :(得分:1)
尝试检查您的webAPI。
如果您无权访问Web服务器的日志,则可以设置null而不是'catchError'块,并使用调试器检查Angular应用程序。
答案 4 :(得分:0)
有同样的问题。 catchError不应放在尖括号中。
错误:点击时调用catchError
getHeroes() : Observable<Hero[]> {
return this.http.get<Hero[]>(this.heroesUrl)
.pipe(tap(_ => console.log('Fetching heroes'),
catchError(this.handleError('getting heroes', [])) ))
}
正确的是:(没有捕获catchError)
getHeroes() : Observable<Hero[]> {
return this.http.get<Hero[]>(this.heroesUrl)
.pipe(tap(_ => console.log('Fetching heroes')),
catchError(this.handleError('getting heroes', []) ))
}
答案 5 :(得分:0)
我遇到了同样的问题,并通过使用catch和不在内部的管道作为catchError的参数来解决
this.http.post(payload)
.pipe(map((res) => {
return res.data;
}),
)
.catch(err => {
throw of(err);
});
}