Angular2 异常处理程序不工作
Angular2 ExceptionHandler not working
我搜索了很多,但没有找到任何可以帮助我克服困难的东西。我想我已经按要求实现了 Angular2 ExceptionHandler,但它永远不会被调用。
Main.ts:
import { bootstrap } from '@angular/platform-browser-dynamic';
import { disableDeprecatedForms, provideForms } from '@angular/forms';
import { AppComponent } from './app.component';
import { ExceptionHandler, Injector , provide, Provider} from '@angular/core';
import { APP_ROUTER_PROVIDERS } from './app.routes'; // <-- load in global routes and bootstrap them
import { ErrorHandler } from './errorhandler/error-handler.component';
bootstrap(AppComponent,[
APP_ROUTER_PROVIDERS,
disableDeprecatedForms(),
provideForms(),
provide(ExceptionHandler, {useClass: ErrorHandler})
])
错误-handler.component.ts:
import { Component, Injectable, ExceptionHandler } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
import { APP_PROVIDERS } from '../app.providers';
@Component({
moduleId: module.id,
template: `Error happened here!!!!`,
directives: [ ROUTER_DIRECTIVES ],
providers: [ APP_PROVIDERS ]
})
@Injectable()
export class ErrorHandler extends ExceptionHandler {
call (exception: any, stackTrace?: any, reason?: string): void {
}
}
我有一个 HTTP 错误,我强制在我的一项服务中发生(以测试异常处理)并希望我的 "global" 处理程序被调用。我错过了什么吗?不幸的是,现在没有很多文档...
TIA。
詹姆斯
不知道这是否是问题所在,但不要使用 Component
作为错误处理程序。那不是做事的方式。
您只需(甚至没有必要,但它看起来更酷)实现 ExceptionHandler
接口,而不是扩展它。不需要@Injectable()
(还...说不定以后这个handler会有依赖,那就有必要了)
export class ErrorHandler implements ExceptionHandler {
call(error, stackTrace = null, reason = null) {
// do something with the exception
}
}
您可以保持 bootstrap 原样
我搜索了很多,但没有找到任何可以帮助我克服困难的东西。我想我已经按要求实现了 Angular2 ExceptionHandler,但它永远不会被调用。
Main.ts:
import { bootstrap } from '@angular/platform-browser-dynamic';
import { disableDeprecatedForms, provideForms } from '@angular/forms';
import { AppComponent } from './app.component';
import { ExceptionHandler, Injector , provide, Provider} from '@angular/core';
import { APP_ROUTER_PROVIDERS } from './app.routes'; // <-- load in global routes and bootstrap them
import { ErrorHandler } from './errorhandler/error-handler.component';
bootstrap(AppComponent,[
APP_ROUTER_PROVIDERS,
disableDeprecatedForms(),
provideForms(),
provide(ExceptionHandler, {useClass: ErrorHandler})
])
错误-handler.component.ts:
import { Component, Injectable, ExceptionHandler } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
import { APP_PROVIDERS } from '../app.providers';
@Component({
moduleId: module.id,
template: `Error happened here!!!!`,
directives: [ ROUTER_DIRECTIVES ],
providers: [ APP_PROVIDERS ]
})
@Injectable()
export class ErrorHandler extends ExceptionHandler {
call (exception: any, stackTrace?: any, reason?: string): void {
}
}
我有一个 HTTP 错误,我强制在我的一项服务中发生(以测试异常处理)并希望我的 "global" 处理程序被调用。我错过了什么吗?不幸的是,现在没有很多文档...
TIA。
詹姆斯
不知道这是否是问题所在,但不要使用 Component
作为错误处理程序。那不是做事的方式。
您只需(甚至没有必要,但它看起来更酷)实现 ExceptionHandler
接口,而不是扩展它。不需要@Injectable()
(还...说不定以后这个handler会有依赖,那就有必要了)
export class ErrorHandler implements ExceptionHandler {
call(error, stackTrace = null, reason = null) {
// do something with the exception
}
}
您可以保持 bootstrap 原样