服务在异常处理程序中变得未定义
Service becomes undefined in exception handler
我有一项服务可以注入我的 AuthenticationService
。在此服务中,我启动了第三方打字稿客户端并在服务中注册了一个方法作为异常处理程序。
我的问题是,当异常处理程序被调用时,AuthenticationService
变得未定义。我在构造函数中设置了断点,可以看到 _auth
变量已正确填充。但是当调用异常处理程序时,它是未定义的。我尝试将其设置为 属性 但发生了相同的行为。
这是我的服务:
@Injectable({
providedIn: 'root'
})
export class DomainAlertsService {
client : JsonServiceClient;
constructor( private _auth: AuthenticationService ) {
this.client = new JsonServiceClient(environment.apiUrl);
this.client.exceptionFilter = this.exceptionHandler;
}
exceptionHandler(ex : Response)
{
if(ex.status == 401)
{
this._auth.logout(); // _auth is now undefined
location.reload(true);
}
else{
console.log("unhandled exception");
console.log(ex);
}
}
//.. other methods removed
}
我想这是某种范围界定问题,但我不确定发生了什么。为什么调用 exceptionHandler()
方法时 _auth
未定义?
我认为你需要将它绑定到组件的范围,像这样:
this.client.exceptionFilter = this.exceptionHandler.bind(this);
我有一项服务可以注入我的 AuthenticationService
。在此服务中,我启动了第三方打字稿客户端并在服务中注册了一个方法作为异常处理程序。
我的问题是,当异常处理程序被调用时,AuthenticationService
变得未定义。我在构造函数中设置了断点,可以看到 _auth
变量已正确填充。但是当调用异常处理程序时,它是未定义的。我尝试将其设置为 属性 但发生了相同的行为。
这是我的服务:
@Injectable({
providedIn: 'root'
})
export class DomainAlertsService {
client : JsonServiceClient;
constructor( private _auth: AuthenticationService ) {
this.client = new JsonServiceClient(environment.apiUrl);
this.client.exceptionFilter = this.exceptionHandler;
}
exceptionHandler(ex : Response)
{
if(ex.status == 401)
{
this._auth.logout(); // _auth is now undefined
location.reload(true);
}
else{
console.log("unhandled exception");
console.log(ex);
}
}
//.. other methods removed
}
我想这是某种范围界定问题,但我不确定发生了什么。为什么调用 exceptionHandler()
方法时 _auth
未定义?
我认为你需要将它绑定到组件的范围,像这样:
this.client.exceptionFilter = this.exceptionHandler.bind(this);