Angular RxJS Observables

Working with RxJS Observables in Angular

Creating Observables

import { Observable } from 'rxjs';
const obs$ = new Observable(observer => {
    observer.next(1); # emit value
    observer.complete(); # complete
});

Subscribing

obs$.subscribe({ # subscribe to observable
    next: value => console.log(value),
    error: err => console.error(err),
    complete: () => console.log('Done')
});

Common Operators

import { map, filter, tap } from 'rxjs/operators';
obs$.pipe(
    map(x => x * 2), # transform values
    filter(x => x > 5), # filter values
    tap(x => console.log(x)) # side effects
).subscribe();

HTTP with Observables

this.http.get('api/data')
    .pipe(
        map(response => response.data)
    )
    .subscribe(data => {
        this.data = data;
    });

Subject

import { Subject } from 'rxjs';
const subject$ = new Subject(); # create subject
subject$.next(1); # emit value
subject$.subscribe(val => console.log(val)); # subscribe

BehaviorSubject

import { BehaviorSubject } from 'rxjs';
const subject$ = new BehaviorSubject(0); # initial value
subject$.getValue(); # get current value