要从Angular错误处理程序中获取组件上下文,您可以使用ErrorHandler
类和Injector
服务。
首先,在您的应用程序中创建一个自定义的错误处理程序类,该类将扩展ErrorHandler
类。在您的自定义错误处理程序中,您可以通过注入Injector
服务来访问当前组件的上下文。
以下是一个示例:
import { ErrorHandler, Injectable, Injector } from '@angular/core';
@Injectable()
export class CustomErrorHandler extends ErrorHandler {
constructor(private injector: Injector) {
super();
}
handleError(error: any): void {
// 获取当前组件的上下文
const componentContext = this.injector.get(ComponentContext);
// 处理错误逻辑
console.log('Error occurred in component:', componentContext);
console.error(error);
// 可以选择重新抛出错误以终止应用程序
// throw error;
}
}
在上面的示例中,我们注入了Injector
服务,并使用get()
方法从注入器中获取了ComponentContext
。ComponentContext
是一个自定义类,您可以根据您的需要进行调整。这个类应该包含您希望从错误处理程序中获取的组件上下文的任何信息。
接下来,您需要在您的应用程序的根模块中提供自定义错误处理程序:
import { ErrorHandler } from '@angular/core';
import { CustomErrorHandler } from './custom-error-handler';
@NgModule({
imports: [/* ... */],
declarations: [/* ... */],
providers: [
// 提供自定义错误处理程序
{ provide: ErrorHandler, useClass: CustomErrorHandler }
],
bootstrap: [/* ... */]
})
export class AppModule { }
现在,当发生错误时,自定义错误处理程序将被调用,并且您将能够访问当前组件的上下文。
请注意,您可以选择重新抛出错误以终止应用程序。