Проблема с заголовками в указанных c сервисах - PullRequest
0 голосов
/ 18 февраля 2020

В моем компоненте в моей функции onInit() у меня есть вызов, чтобы перечислить некоторые данные. Этот вызов выполняется службой Permission.service с использованием следующего кода.

  ngOnInit() {
    this.listPermissions();
  }

  listPermissions(): void {
    this.permissionService.getPermissions().subscribe(
      res=>{
        this.permissionList=res;
      }
    )
  }

Однако он выдает следующий журнал ошибок:

core. js : 1673 ОШИБКА TypeError: Невозможно прочитать свойство 'length' с неопределенным значением в http. js: 108 в Array.forEach () в HttpHeaders.lazyInit (http. js: 102) в HttpHeaders.pu sh .. / node_modules/@angular/common/fesm5/http.js.HttpHeaders.init (http. js: 166) по адресу HttpHeaders.pu sh .. / node_modules/@angular/common/fesm5/http.js .HttpHeaders.forEach (http. js: 235) в Observable._subscribe (http. js: 1445) в Observable.pu sh .. / node_modules / rxjs / _esm5 / internal / Observable. js .Observable._trySubscribe (Observable. js: 43) в Observable.pu sh .. / node_modules / rxjs / _esm5 / internal / Observable. js .Observable.subscribe (Наблюдаемый. js: 29) в subscribeTo. js: 21 at subscribeToResult (subscribeToResult. js: 11)

При использовании отладчика chrome заголовок "x-access-token" возвращает неопределенное значение ред значение. Однако, вызывая другую службу с точно таким же кодом, за исключением имени службы, она работает просто отлично.

export class PermissionsService {
  constructor(private http: HttpClient, private loginService: LoginService, private globalService: GlobalsService) {}
  httpOptions = {
    headers: new HttpHeaders({
      "Content-Type": "application/json",
      "x-access-token": this.loginService.userInfo
    })
  };

  getPermissions(): Observable<any[]> {
    return this.http.get<any[]>(
      this.globalService.API_PATH + "readAllPermissions",
      this.httpOptions
    );
  }
...

и ниже - служба, которая не работает:

export class RolePermissionService {

  constructor(private http: HttpClient, private loginService: LoginService, private globalService: GlobalsService) { }
  httpOptions = {
    headers: new HttpHeaders({
      "Content-Type": "application/json",
      "x-access-token": this.loginService.userInfo
    })
  };

  getPermissions(): Observable<any[]> {
    return this.http.get<any[]>(
      this.globalService.API_PATH + "readAllPermissions",
      this.httpOptions
    );
  }

Переменная userInfo устанавливается в функции входа в систему перед попыткой доступа к компоненту.

1 Ответ

0 голосов
/ 18 февраля 2020

Проблема была решена. Я использовал httpOptions, который отправлял Navbar. Но до входа в систему навигационная панель уже была инициализирована, и мои заголовки не были определены. В этом сервисе я создаю функцию для инициализации моих httpOptions и каждый раз, когда я использую этот метод, я получаю токен авторизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...