Когда вы начинаете работать с 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'…