
Когда вы начинаете работать с Angular и его интеграцией с модулем HTTP Client, обычно вы сталкиваетесь с Observables. Они являются основной частью того, как Angular обрабатывает асинхронные операции, такие как HTTP-запросы. Одной из распространенных проблем для новичков является понимание того, как извлекать данные из этих Observable и использовать их в своих компонентах или сервисах.
Понимание наблюдаемых
Прежде чем мы углубимся в решения, важно понять, что такое Observables. В Angular Observables используются для обработки асинхронных данных. Они происходят из библиотеки RxJS, которая предоставляет ряд операторов для манипулирования и обработки асинхронных потоков данных.
1. Базовый HTTP-вызов с использованием HttpClient
Когда вы делаете HTTP-запрос с помощью HttpClient Angular, он возвращает Observable:
import { HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) {}
fetchData() {
return this.http.get('https://api.example.com/data');
}
2. Подписка на Observable
Чтобы получить данные из Observable, вам нужно subscribe к нему:
this.fetchData().subscribe(data => {
console.log(data);
});
Внутри метода subscribe данные, которые вы получаете, являются фактическим ответом на HTTP-запрос.
3. Использование трубы async
Другой способ обработки данных Observable в шаблонах Angular — использование канала async:
<div *ngIf="data$ | async as data">
{{ data.name }}
</div>
В вашем компоненте:
data$ = this.fetchData();
Канал async подписывается на Observable и возвращает испускаемые значения. Как только компонент уничтожается, он автоматически отменяет подписку, предотвращая возможные утечки памяти.
4. Преобразование данных с помощью операторов RxJS
Иногда вы можете захотеть преобразовать ответ, прежде чем использовать его. Для этого RxJS предлагает ряд операторов:
import { map } from 'rxjs/operators'…