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