在Angular 8+中实现ErrorHandler类;在运行时给出异常

在Angular 8+中实现ErrorHandler类;在运行时给出异常,angular,error-handling,Angular,Error Handling,浏览器中的异常: 将MyErrorHandler类移动到一个单独的文件中,并将其导入AppModule,它应该可以工作。 Angular使用typescript装饰器,这些装饰器在它们所属的每个类之上定义。在您的例子中,您将装饰程序@NgModule添加到类MyErrorHandler,这样,Angular就无法找到mainAppModule的正确配置,这就是为什么在编译时会收到这样的错误。将MyErrorHandler类移动到一个单独的文件中,并将其导入AppModule中,它应该可以工作。它

浏览器中的异常:


将MyErrorHandler类移动到一个单独的文件中,并将其导入AppModule,它应该可以工作。

Angular使用typescript装饰器,这些装饰器在它们所属的每个类之上定义。在您的例子中,您将装饰程序
@NgModule
添加到类
MyErrorHandler
,这样,Angular就无法找到main
AppModule
的正确配置,这就是为什么在编译时会收到这样的错误。

MyErrorHandler
类移动到一个单独的文件中,并将其导入
AppModule
中,它应该可以工作。它工作得很好。我可以知道原因吗?谢谢你的帮助和指导。 this snippet is from app.module.ts. I just created an angular 9 application
and tried to implement ErrorHandler class to catch error but it is showing
the error at run time and page does not load.
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { ErrorHandler } from '@angular/core';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [
    {provide: ErrorHandler, useClass: MyErrorHandler}
  ],
  bootstrap: [AppComponent]
})

class MyErrorHandler implements ErrorHandler {
  handleError(error) {
    alert(error);
    // do something with the exception
  }
}
export class AppModule { }

ASSERTION ERROR: Type passed in is not NgModuleType, it does not have 'ɵmod' property.
    at throwError (core.js:1344)
    at assertNgModuleType (core.js:2951)
    at compileNgModuleFactory__POST_R3__ (core.js:42275)
    at PlatformRef.bootstrapModule (core.js:42663)
    at Module../src/main.ts (main.ts:11)
    at __webpack_require__ (bootstrap:79)
    at Object.0 (main.ts:12)
    at __webpack_require__ (bootstrap:79)
    at checkDeferredModules (bootstrap:45)
    at Array.webpackJsonpCallback [as push] (bootstrap:32)