Вы создаете запрос, но никогда не подписываетесь на него!У вас есть несколько вариантов здесь:
- Подписаться вручную и обновить
servicos
private servicos: Servico[];
constructor(
private servicosService: ServicosService
) {
// Use the component constructor to inject providers.
this.servicos = this.servicosService.listar().subscribe((response) => this.servicos = response);
}
Сохраните тот же код, но используйте
async
каналы в вашем html (будьте осторожны! Он будет вызывать ваши API каждый раз, когда отображается этот экран, и будет вызывать несколько раз для кратных
async
с)
<Label [text]="servico.text" *ngFor="let servico of servicos | async"></Label>
Контекст:
HttpClient
запросы всегда возвращают Observable
из rxjs
.
Наблюдаемые объекты - это холодные объекты, то есть они невыполнять любой код до тех пор, пока кто-нибудь не subscribe
s к нему.Напротив, Promise
s всегда выполняется в тот момент, когда он объявлен.
Рассмотрим код:
const request = new Promise((resolve, reject) => {
console.log("executing");
resolve();
});
setTimeout(() => request.then(() => console.log("success")), 1000)
Результат в
executing
- 1s wait -
success
Теперь используется Observable
:
const request = new Observable((subscriber) => {
console.log("executing");
subscriber.next();
subscriber.complete();
});
setTimeout(() => request.subscribe(() => console.log("success")), 1000)
В результате:
- 1s wait -
executing
success
Труба async
, по сути, вызывает subscribe
, когда она «визуализируется», и unsubscribe
, когда уничтожается, поэтомудолжен управлять им сам.