Angular中组件级的错误处理

时间:2019-04-14 11:16:05

标签: angular

我想在组件级别进行错误处理。如果我在组件级别注入错误处理程序,它将无法正常工作。但是在模块级别上注入相同的对象就可以了。

有效的代码:-

@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));
  }

}

当在组件级别注入错误处理程序时,我期望错误处理能够正常工作。但这仅在模块级别注入时有效。谁能告诉我为什么会这样吗?

0 个答案:

没有答案