Мне сообщили, что рекомендуется делать запросы к серверу через сервисы (а не через компоненты), чтобы запрос функции можно было использовать повторно (другими компонентами).Конечно, в конце нам понадобится ответ сервера в компоненте.
Мой вопрос заключается в том, что лучше всего делать вызов от компонента к службе для получения данных.я спрашиваю, потому что http-запрос будет действием Observable, означающим, что это асинхронное действие.
поэтому, если я сделаю что-то вроде этого:
//data.component.ts
const data = this.httpService.getDataFromTheServer();
//httpService.service.ts
getDataFromTheServer(){
return this.http.post(url).map(
res=>res.json())
}
данные никогда не попадут впеременная компонента.
Мое решение для этой проблемы - использовать в другом "Предмете".как то так:
//data.component.ts
this.httpService.getDataFromTheServer()
this.httpService.getData.subscribe(res => {
const data = res;
}
//httpService.service.ts
public getData = new Subject();
getDataFromTheServer(){
return this.http.post(url).map(
res=> this.getData.next(res.json()))
}
вот так будет нормально.но я не уверен, что это лучшая практика для этой проблемы.
У кого-нибудь есть другая идея?большое спасибо!
ОБНОВЛЕНИЕ
Спасибо всем респондентам.я понял, что могу сделать это в моем компоненте:
this.httpService.getDataFromTheServer().subscribe...
, но мне интересно, могу ли я больше чистить свои компоненты, и обойтись только этим:
const data = this.httpService.getDataFromTheServer()
или если естьдругой способ очистки компонентов?или, может быть, я не понял рекомендации "сделать запросы к серверу через службы"?Я был бы рад объяснить более четко.