将对象转换为@NgModule中的提供程序

时间:2018-05-08 14:19:48

标签: angular typescript sentry

我正在尝试在角度5项目上设置哨兵。指示显示放置在提供者中的对象,如下所示:

import * as Raven from 'raven-js';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, ErrorHandler } from '@angular/core';
import { AppComponent } from './app.component';

Raven
.config('https://KEY')
.install();

export class RavenErrorHandler implements ErrorHandler {
handleError(err:any) : void {
Raven.captureException(err.originalError);
}
}

@NgModule({
imports: [ BrowserModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ],
providers: [ { provide: ErrorHandler, useClass: RavenErrorHandler } ]
})
export class AppModule { }

我的项目在providers数组中还有一些东西,看起来像这样:

  providers: [
{ provide: ErrorHandler, useClass: RavenErrorHandler }, //sentry
MapDataService,
GraphService
]

这是允许角度?我问,因为我对此很陌生而且我不能让哨兵上班,我只是对这部分感到不安,在我开始寻找其他地方之前,我想看看这是否正常。

1 个答案:

答案 0 :(得分:0)

这完全没问题。您正在AppModule中注册三个提供商 - ErrorHandlerMapDataServiceGraphService

并且还说每次应用程序需要ErrorHandler时,它应该使用您自己的RavenErrorHandler代替。