我想在组件级别进行错误处理。如果我在组件级别注入错误处理程序,它将无法正常工作。但是在模块级别上注入相同的对象就可以了。
有效的代码:-
@NgModule({
declarations: [
AppComponent,
UserComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
***providers: [{provide: ErrorHandler, useClass: AppErrorHandler}]***,
bootstrap: [AppComponent]
})
export class AppModule { }
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
***providers: []***
})
export class AppComponent implements OnInit {
constructor(private errorHandler: ErrorHandler) {}
title = 'ErrorHandlerDemo';
ngOnInit(): void {
(this.errorHandler as AppErrorHandler).errorObservable.subscribe((err) => console.log(err));
}
}
现在,如果模块中的任何地方发生任何错误,AppErrorHandler都会捕获该错误。
无效的代码:-
@NgModule({
declarations: [
AppComponent,
UserComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
***providers: []***,
bootstrap: [AppComponent]
})
export class AppModule { }
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
***providers: [{provide: ErrorHandler, useClass: AppErrorHandler}]***
})
export class AppComponent implements OnInit {
constructor(private errorHandler: ErrorHandler) {}
title = 'ErrorHandlerDemo';
ngOnInit(): void {
(this.errorHandler as AppErrorHandler).errorObservable.subscribe((err) => console.log(err));
}
}
当在组件级别注入错误处理程序时,我期望错误处理能够正常工作。但这仅在模块级别注入时有效。谁能告诉我为什么会这样吗?