Angular4 не показывает правильный результат из get API - PullRequest
0 голосов
/ 13 июня 2018

Когда я пытаюсь получить данные из API с помощью этого кода:

getUserRole() {
      const headers = new Headers();
      headers.append('Authorization', `Bearer ${this.getToken()}`);
      console.log(this.getToken());
      const options = new RequestOptions({ headers: headers});
      return this.http.get(`${this.baseURL + this.loginApiRoot}/GetUserRoles`).pipe(map(res => res.json()))
      .subscribe(data => {
      this.userRole = JSON.stringify(data);
        if (this.userRole === 'parent') {
          this.logout();
      } else if (this.userRole === 'school') {
        this.isUser = true;
        this.isAdmin = false;
        this.cookieService.set('isSchool', '1');
      } else if (this.userRole === 'admin') {
        this.isUser = false;
        this.isAdmin = true;
        this.cookieService.set('isAdmin', '1');
      }
      });
   }

Я получаю [], означает пустой массив.Но тот же API, когда я пытаюсь использовать почтальон, выдает заполненный массив следующим образом:

[
    "Parent"
]

Я дважды проверил свой API и подтвердил, что все в порядке, но я не понимаю, почему я получаюдругой результат.Есть ли проблемы с моим подходом?

1 Ответ

0 голосов
/ 13 июня 2018

Так как angular6 по умолчанию имеет HttpClient, вам не нужно явно вызывать .json ()

return this.http.get(`${this.baseURL + this.loginApiRoot}/GetUserRoles`).pipe(map(res => res))

, также JSON.stringify не требуется,

this.userRole = data;

EDIT:

Вам нужно также передать заголовки в запросе put,

 return this.http.get(`${this.baseURL + this.loginApiRoot}/GetUserRoles`,options)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...