Служба становится неопределенной в обработчике исключений - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть сервис, который вводит мой 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

}

Я представляю, что это какая-то проблема, но я не уверен, что происходит. Почему _auth не определено при вызове exceptionHandler() метода?

1 Ответ

0 голосов
/ 01 ноября 2018

Я думаю, вам нужно привязать его к области действия компонента, например так:

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