我正在添加带有要发出的事件的自定义错误处理程序,在错误时我想向主组件发出错误消息以在页面顶部显示它。
@Injectable()
export class GlobalErrorHandler implements ErrorHandler {
constructor() { }
errors: BehaviorSubject<any> = new BehaviorSubject(false);
//errors: Subject<any> = new Subject();
technicalError= false;
handleError(error) {
const httpCode = error.status;
if (httpCode !== undefined) {
this.errors.next(error._body);
//this.technicalError = true;
}else {
console.log('Error--' + error);
// throw error;
}
}
}
主要组件.ts
@Component{
providers: {GlobalErrorhandler}
}
export class MainComponent {
constructor(private glbError:GlobalErrorHandler){
}
onInit(){
this.glbError.errors.subscribe({
body=> {
this.technicalErrors = body;
}
});
}
showError(){
throw new error();//consider it as http error with 400 or 403, this is sample one
}
}
在从后端收到错误时,它会触发 handleError 方法,但不会将错误消息发送到 MainComponent。
更新的问题 还在 MainModule 中添加了以下行
providers: [{provide:ErrorHandler, useClass:GlobalErrorHandler}]