servicestack,Angular,Angular6,servicestack" /> servicestack,Angular,Angular6,servicestack" />

Angular 服务在异常处理程序中变得未定义

Angular 服务在异常处理程序中变得未定义,angular,angular6,servicestack,Angular,Angular6,servicestack,我有一个注入我的身份验证服务的服务。在这个服务中,我启动一个第三方typescript客户端,并在服务中注册一个方法作为异常处理程序 我的问题是,当调用异常处理程序时,AuthenticationService已变得未定义。我在构造函数中设置了断点,可以看到\u auth变量已正确填充。但当调用异常处理程序时,它是未定义的。我尝试将其设置为属性,但出现了相同的行为 这是我的服务: @Injectable({ providedIn: 'root' }) export class DomainA

我有一个注入我的
身份验证服务的服务
。在这个服务中,我启动一个第三方typescript客户端,并在服务中注册一个方法作为异常处理程序

我的问题是,当调用异常处理程序时,
AuthenticationService
已变得未定义。我在构造函数中设置了断点,可以看到
\u 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()
方法时,为什么
\u auth
未定义?

我认为需要将其绑定到组件的范围,如下所示:

this.client.exceptionFilter = this.exceptionHandler.bind(this);

我认为您需要将其绑定到组件的范围,如下所示:

this.client.exceptionFilter = this.exceptionHandler.bind(this);

谢谢,这是我的工作。我会接受答复后的时间限制。谢谢,这项工作。我会在期限后接受答案。可能的副本可能的副本