在经历
Angular tutorial
将其转换为我的目的,我决定将显示的两种错误处理程序方法组合为一种,因为我喜欢这两种方法的功能。
这都是一个服务,这是本教程中的两种方法:
private handleError1(error: HttpErrorResponse) {
if (error.error instanceof ErrorEvent) {
console.error('An error occurred', error.error.message);
} else {
console.error(`Backend error code ${error.status}`,
`body: ${error.error}`);
}
return throwError('Something bad happened');
}
像这样叫的,在哪里
Group
我的类是否来自REST服务器:
getGroups(): Observable<Group[]> {
return this.httpClient.get<Group[]>(`${this.restUrl}/group`).pipe(
tap(_ => this.log(`fetched groups`)),
catchError(this.handleError1)
);
}
另外,还有:
private handleError2<T>(operation = 'operation', result?: T) {
return (error: any): Observable<T> => {
console.error(`${operation} failed!`, error);
return of(result as T);
}
}
这叫做:
getGroups(): Observable<Group[]> {
return this.httpClient.get<Group[]>(`${this.restUrl}/group`).pipe(
tap(_ => this.log(`fetched groups`)),
catchError(this.handleError2<Group[]>('getGroups', []))
);
}
所以我天真地将组合错误处理程序组合在一起:
private handleError<T>(error: HttpErrorResponse,
operation = 'operation', result?: T) {
....
但是我有问题,因为我不知道如何在
catchError()
. 那
HttpErrorResponse
当它是唯一的参数时,显然是隐含的,但是如何呢?