Свойства объекта интерфейса не определены, но есть значения в angular - PullRequest
0 голосов
/ 08 апреля 2020

Я вызываю эти API с сервера Node Express в service.ts и подписываю их в component.ts. Я мог проверить, что ответы были правильными, и могли копировать его в интерфейсный объект, а также могли сохранять их в console.log. Тем не менее, я не могу получить доступ к каждому свойству объекта. Когда я console.log объекта, он показывает значения с каждым свойством, но не может видеть каждое отдельно (показывает неопределенный). Проверьте приведенные ниже коды.

это интерфейс для хранения ответа на запрос на получение

export interface LOLUserData {
  profileIconId: number;
  name: string;
  puuid: string
  summonerLevel: number;
  revisionDate: number;
  id: string;
  accountId: number;
  profileimg: string;
}

Это API от узла express сервер

app.route("/api/profile/").get((req, res) => {
    fetch("https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/" + req.query.name + "?api_key=RGAPI-e98dc13b")
        .then(res => res.json())
        .then(data => {
            res.send({ data });
        })
        .catch(err => {
            res.send(err);
        });
});

Это service.ts

getdata(name: string): Observable<LOLUserData> {
    return this.http
      .get<LOLUserData>('http://localhost:8000/api/profile/', {
        params: {
          name: name
        }
      }).pipe(map(res => res))

Это подписка

public heroes: LOLUserData; //interface object
getHeroes = (name: string) => {
    this.summonerService.getdata(name).subscribe(hero => {
      this.heroes = hero; //copies a response
      console.log(this.heroes); //I can see all properties here
      this.heroes.profileimg = this.url + this.heroes.profileIconId + ".png";
                                        //this.heroes.profileIconId is undefined
      this.submitted = true;
    }),
      error => this.setErrValue(this.heroes)
  }
}

Я могу проверить ответ от узла express server, service.ts и component.ts, так что я не думаю, с ответом что-то не так, но я не знаю, почему какое-то одно значение из ответа отображается неопределенным.

1 Ответ

0 голосов
/ 09 апреля 2020

Я действительно выяснил, почему он дал мне неопределенное значение для каждого свойства. Это потому, что ответ находится в объекте с именем «data», поэтому я сделал это как heroes [«data»]. ProfileIcondId. Однако я до сих пор не понимаю, почему ответ находится в объекте данных.

...