Присвойте данные из JSON объекту непосредственно в Angular - PullRequest
0 голосов
/ 02 мая 2020

Это от https://angular.io/guide/http. В нем говорится, что

Чтобы получить доступ к свойствам, которые определены в интерфейсе, вы должны явно преобразовать простой объект, полученный из JSON, в требуемый тип ответа.

.subscribe(data => this.config = {
  heroesUrl: (data as any).heroesUrl,
  textfile:  (data as any).textfile,
});

Интерфейс конфигурации:

export interface Config {
  heroesUrl: string;
  textfile: string;
}

Таким образом, код компонента будет выглядеть примерно так:

config: Config;

showConfig() {
  this.configService.getConfig()
    // clone the data object, using its known Config shape
    .subscribe(data => this.config = {
    heroesUrl: (data as any).heroesUrl,
    textfile:  (data as any).textfile,
});
}

Я пытаюсь сделать что-то подобное для моего проекта; получите json и сохраните его в объекте. Есть ли способ сделать это напрямую без явного присвоения каждой переменной?
Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

я думаю, что это единственный способ, другая форма того же способа - передача всех данных json в переменную, но затем вы сделаете то же самое для html, чтобы принять указанное вами значение c, которое вы хотите получить ответ json. пример:

ts:

showConfig() {
  this.configService.getConfig().subscribe(response => {
    this.data = response.data
    }
  });
}

html:

<span>
all the data : {{data}}
<br>
the heroesUrl : {{data.heroesUrl}}
<br>
the textfile : {{data.textfile}}
</span>
0 голосов
/ 02 мая 2020

Не уверен, уверен, что я понимаю ваш вопрос.

Вы можете напрямую возвращать объект, а не тип, любой из ваших бэкэндов вернет структурированные данные правильно.

return this.http.get<Config>().subscribe(config => ...);

Это вернет наблюдаемая Config.

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