Angular 函数可以';我看不到自己以外的任何东西(角度)

Angular 函数可以';我看不到自己以外的任何东西(角度),angular,typescript,Angular,Typescript,我为angular做了一个经典的拦截器,现在我为syncfusion请求做了一个拦截器。我找到了解决办法,但我有个问题。 为什么我不能在我的函数实例中调用方法? 这是我的源代码 如果出现401错误,我只想返回登录页面,因此如果我可以直接调用登录页面而不使用goBack方法,那就更好了。每个函数声明都有自己的上下文,默认情况下,这是引用的。要保留外部此功能,您可以将该功能替换为箭头功能 正如我想说的-这是一个简单的解决方案。 import { DataManager, UrlAdaptor }

我为angular做了一个经典的拦截器,现在我为syncfusion请求做了一个拦截器。我找到了解决办法,但我有个问题。 为什么我不能在我的函数实例中调用方法? 这是我的源代码


如果出现401错误,我只想返回登录页面,因此如果我可以直接调用登录页面而不使用goBack方法,那就更好了。

每个函数声明都有自己的上下文,默认情况下,这是
引用的。要保留外部
功能,您可以将该功能替换为箭头功能


正如我想说的-这是一个简单的解决方案。
import { DataManager, UrlAdaptor } from '@syncfusion/ej2-data';
import { CookieService } from 'ngx-cookie-service';
import { Router } from '@angular/router';
import { AppGlobalService } from '../appglobal.service';

export class CustomAdaptor extends UrlAdaptor {
  router: Router;

  constructor(private AppGlobal: AppGlobalService) {
    super();
  }

  beforeSend(dm: DataManager, request: XMLHttpRequest) {
    request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
    dm.dataSource.headers = [{ 'Authorization': 'Bearer ' + this.AppGlobal.GetCookie() }];

    request.onloadend = function () {
      if (request.status == 401) {
        this.goBack();
      }
    }
  }

  goBack() {
    this.router = this.AppGlobal.GetRouter();
    this.router.navigate(['login']);
  }
}
request.onloadend = () => {
   if (request.status == 401) {
      this.goBack();
   }
}