如何在组件中抛出错误并在 ErrorHandler 中处理它?
How do I throw an error in a component and handle it in ErrorHandler?
有我的拦截器class,它应该检查错误状态是否为 401,如果是,它会从服务调用 signOut() 方法,如果不是,什么都不做:
@Injectable()
export class MyErrorHandler implements ErrorHandler {
constructor(
private UserService: UserService,
) {
}
handleError(error) {
if (error?.status === 401) {
this.UserService.signOut();
}
}
}
有我的组件:
@Component({
...
})
export class CartTableComponent implements OnInit {
...
updateQuantity(i: number): void {
this.CartService.update(i).subscribe(data => {
...
})
}
}
所以它有效。 ErrorHandler 处理它。
然后我需要组件在收到错误时做一些事情,所以我在那里添加错误状态:
@Component({
...
})
export class CartTableComponent implements OnInit {
...
updateQuantity(i: number): void {
this.CartService.update(i).subscribe(data => {
...
}, error => {
console.log('Some text should be shown when the method receives the error');
throw new Error(error);
})
}
}
在我添加错误后,ErrorHandler 不处理错误。 handleError() 方法接收 [Object object] 而不是 object of error 并且它无法读取 error?.status.
如何在组件中抛出错误并在 ErrorHandler 中处理它?
你试过直接抛错吗? throw error
而不是 throw new Error(error);
?
此外,如果你想检查请求,我认为最好使用 HTTP_INTERCEPTOR 这种方法你的拦截器将是第一个收到错误的元素,并且可以处理(或传递)给相应的组件。
有我的拦截器class,它应该检查错误状态是否为 401,如果是,它会从服务调用 signOut() 方法,如果不是,什么都不做:
@Injectable()
export class MyErrorHandler implements ErrorHandler {
constructor(
private UserService: UserService,
) {
}
handleError(error) {
if (error?.status === 401) {
this.UserService.signOut();
}
}
}
有我的组件:
@Component({
...
})
export class CartTableComponent implements OnInit {
...
updateQuantity(i: number): void {
this.CartService.update(i).subscribe(data => {
...
})
}
}
所以它有效。 ErrorHandler 处理它。
然后我需要组件在收到错误时做一些事情,所以我在那里添加错误状态:
@Component({
...
})
export class CartTableComponent implements OnInit {
...
updateQuantity(i: number): void {
this.CartService.update(i).subscribe(data => {
...
}, error => {
console.log('Some text should be shown when the method receives the error');
throw new Error(error);
})
}
}
在我添加错误后,ErrorHandler 不处理错误。 handleError() 方法接收 [Object object] 而不是 object of error 并且它无法读取 error?.status.
如何在组件中抛出错误并在 ErrorHandler 中处理它?
你试过直接抛错吗? throw error
而不是 throw new Error(error);
?
此外,如果你想检查请求,我认为最好使用 HTTP_INTERCEPTOR 这种方法你的拦截器将是第一个收到错误的元素,并且可以处理(或传递)给相应的组件。