Angular如何在自定义ErrorHandler中使用HttpClient?

莱乔

我想在自定义错误处理程序中调用rest API,以便在调用处理程序时通过电子邮件发送给自己。

我尝试使用喷油器,但出现此错误:

Error: Cannot instantiate cyclic dependency! HttpClient

在这里您可以看到我的错误处理程序:

import { Router } from '@angular/router';
import { ErrorHandler, Injector, Injectable, NgZone } from '@angular/core';
import { ToastrService } from 'ngx-toastr';
import { HttpClient } from '@angular/common/http';

@Injectable()
export class AppErrorHandler extends ErrorHandler {

  constructor(private injector: Injector) {
    super();
  }

  private get toastrService(): ToastrService {
    return this.injector.get(ToastrService);
  }

  private get http(): HttpClient {
    return this.injector.get(HttpClient);
  }

  private get router(): Router {
    return this.injector.get(Router);
  }

  private get ngZone(): NgZone {
    return this.injector.get(NgZone);
  }

  public handleError(error: any): void {
    if (error.status === 401) {
      this.ngZone.run(() => this.router.navigate(['/home']));
      this.toastrService.error('Login first', 'Error');
    } else if (error.status === 403) {
      this.ngZone.run(() => this.router.navigate(['/home']));
      this.toastrService.error('unauthorize', 'Error');
    } else {
      this.http.post<any>('/api/error-mailer', error).subscribe(() => { });
      this.toastrService.error('Something went wrong', 'Error', { onActivateTick: true });

    }

    super.handleError(error);
  }
}

我可能也提出了错误的建议,所以如果您能帮助我,那太好了!

所有

您应该使用http拦截器处理httpClient错误在拦截器中,您可以注入所需的服务。但是,您应该密切注意从拦截器调用http请求,因为它将通过拦截器运行,并且当错误邮件程序关闭时,您可能最终陷入循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Dart中使用Angular2实现自定义验证器?

来自分类Dev

如何在 angular 2 中使用自定义 http 刷新访问令牌?

来自分类Dev

如何在angular js中使用下拉菜单自定义过滤器

来自分类Dev

如何在 angular 5 中使用启用的“as 语法”创建自定义指令?

来自分类Dev

如何在 Angular 中使用自定义 Typescript 声明文件 (.d.ts)?

来自分类Dev

如何在Storyboard中使用自定义UICollectionViewCell?

来自分类Dev

如何在MVC中使用自定义storeId?

来自分类Dev

如何在自定义对象的android中使用ArrayAdapter

来自分类Dev

如何在自定义指令中使用ngChange

来自分类Dev

如何在动态编译中使用自定义类

来自分类Dev

如何在SublimeText中使用自定义字体

来自分类Dev

如何在Swagger中使用自定义模板

来自分类Dev

如何在MSBuild脚本中使用自定义变量?

来自分类Dev

如何在Java中使用自定义类型注释

来自分类Dev

如何在QStateMachine addtransition中使用自定义信号

来自分类Dev

如何在iOS中使用.ttc自定义字体

来自分类Dev

如何在网站中使用自定义字体

来自分类Dev

如何在自定义jQuery函数中使用函数

来自分类Dev

如何在Maven中使用自定义库?

来自分类Dev

如何在Python中使用自定义谓词排序

来自分类Dev

如何在多个ViewController中使用自定义UIAlertview?

来自分类Dev

如何在@require(Greasemonkey)中使用自定义变量

来自分类Dev

如何在自定义类中使用Dask

来自分类Dev

如何在torchscript中使用自定义python对象

来自分类Dev

如何在TypeScript中使用自定义钩子(Fetch)

来自分类Dev

如何在自定义下载器中使用glide

来自分类Dev

如何在IMFSourceReader中使用自定义堆

来自分类Dev

如何在Ghostscript / PostScript中使用自定义字体?

来自分类Dev

NextJS:如何在自定义钩子中使用窗口?

Related 相关文章

  1. 1

    如何在Dart中使用Angular2实现自定义验证器?

  2. 2

    如何在 angular 2 中使用自定义 http 刷新访问令牌?

  3. 3

    如何在angular js中使用下拉菜单自定义过滤器

  4. 4

    如何在 angular 5 中使用启用的“as 语法”创建自定义指令?

  5. 5

    如何在 Angular 中使用自定义 Typescript 声明文件 (.d.ts)?

  6. 6

    如何在Storyboard中使用自定义UICollectionViewCell?

  7. 7

    如何在MVC中使用自定义storeId?

  8. 8

    如何在自定义对象的android中使用ArrayAdapter

  9. 9

    如何在自定义指令中使用ngChange

  10. 10

    如何在动态编译中使用自定义类

  11. 11

    如何在SublimeText中使用自定义字体

  12. 12

    如何在Swagger中使用自定义模板

  13. 13

    如何在MSBuild脚本中使用自定义变量?

  14. 14

    如何在Java中使用自定义类型注释

  15. 15

    如何在QStateMachine addtransition中使用自定义信号

  16. 16

    如何在iOS中使用.ttc自定义字体

  17. 17

    如何在网站中使用自定义字体

  18. 18

    如何在自定义jQuery函数中使用函数

  19. 19

    如何在Maven中使用自定义库?

  20. 20

    如何在Python中使用自定义谓词排序

  21. 21

    如何在多个ViewController中使用自定义UIAlertview?

  22. 22

    如何在@require(Greasemonkey)中使用自定义变量

  23. 23

    如何在自定义类中使用Dask

  24. 24

    如何在torchscript中使用自定义python对象

  25. 25

    如何在TypeScript中使用自定义钩子(Fetch)

  26. 26

    如何在自定义下载器中使用glide

  27. 27

    如何在IMFSourceReader中使用自定义堆

  28. 28

    如何在Ghostscript / PostScript中使用自定义字体?

  29. 29

    NextJS:如何在自定义钩子中使用窗口?

热门标签

归档