angular - 将一个对象放入 @NgModule 的 providers 中
我正在尝试在一个 Angular 5 项目中设置 Sentry。说明显示一个对象被放置在 providers 中,如下所示:
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
]
在 Angular 中允许这样做吗?我之所以问,是因为我对此非常陌生,而且我无法使用 Sentry,我对这一部分感到不安。在我开始去其他地方查找之前,我想先看看这样是否可以。
答案#1
这完全没问题。您正在在您的 AppModule 中注册三个提供者 - ErrorHandler、MapDataService 和 GraphService。
并且还说,每次应用程序需要 ErrorHandler 时,它都应该使用你自己的 RavenErrorHandler。