Skip to content
This repository was archived by the owner on Dec 4, 2017. It is now read-only.

Commit 1e3dfad

Browse files
Added examples for observable and operator basics
1 parent a121958 commit 1e3dfad

File tree

5 files changed

+161
-162
lines changed

5 files changed

+161
-162
lines changed

public/docs/_examples/rxjs/ts/src/app/add-hero.component.3.ts

-75
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,32 @@
11
// #docplaster
22
// #docregion
3-
import 'rxjs/add/observable/of';
4-
import 'rxjs/add/observable/fromEvent';
5-
import 'rxjs/add/observable/merge';
6-
import 'rxjs/add/operator/debounceTime';
7-
import 'rxjs/add/operator/do';
8-
import 'rxjs/add/operator/switchMap';
3+
// #docregion rxjs-imports-1
94
import 'rxjs/add/operator/takeUntil';
5+
import 'rxjs/add/observable/merge';
6+
import 'rxjs/add/observable/fromEvent';
7+
// #enddocregion rxjs-imports-1
8+
// #docregion viewchild-imports
109
import { Component, OnInit, OnDestroy, AfterViewInit, ViewChild, ElementRef } from '@angular/core';
11-
import { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms';
12-
import { Observable } from 'rxjs/Observable';
13-
import { Subject } from 'rxjs/Subject';
10+
// #enddocregion viewchild-imports
11+
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
1412

15-
import { EventAggregatorService } from './event-aggregator.service';
13+
import { Hero } from './hero';
1614
import { HeroService } from './hero.service';
1715

16+
// #docregion rxjs-imports-2
17+
import { Observable } from 'rxjs/Observable';
18+
import { Subject } from 'rxjs/Subject';
19+
// #enddocregion rxjs-imports-2
20+
21+
// #docregion viewchild-heroName
1822
@Component({
1923
moduleId: module.id,
20-
templateUrl: 'add-hero.component.html',
24+
templateUrl: './add-hero.component.html',
2125
styles: [ '.error { color: red }' ]
2226
})
2327
export class AddHeroComponent implements OnInit, OnDestroy, AfterViewInit {
2428
@ViewChild('heroName', { read: ElementRef }) heroName: ElementRef;
29+
// #enddocregion viewchild-heroName
2530

2631
form: FormGroup;
2732
showErrors: boolean = false;
@@ -30,32 +35,22 @@ export class AddHeroComponent implements OnInit, OnDestroy, AfterViewInit {
3035

3136
constructor(
3237
private formBuilder: FormBuilder,
33-
private heroService: HeroService,
34-
private eventService: EventAggregatorService
38+
private heroService: HeroService
3539
) {}
3640

3741
ngOnInit() {
3842
this.form = this.formBuilder.group({
39-
name: ['', [Validators.required], [(control: FormControl) => {
40-
return this.checkHeroName(control.value);
41-
}]]
43+
name: ['', [Validators.required]]
4244
});
4345
}
44-
45-
checkHeroName(name: string) {
46-
return Observable.of(name)
47-
.switchMap(heroName => this.heroService.isNameAvailable(heroName))
48-
.map(available => available ? null : { taken: true });
49-
}
50-
46+
// #docregion value-changes
5147
ngAfterViewInit() {
52-
const controlBlur$ = Observable.fromEvent(this.heroName.nativeElement, 'blur');
48+
const controlBlur$: Observable<Event> = Observable.fromEvent(this.heroName.nativeElement, 'blur');
5349

5450
Observable.merge(
55-
this.form.valueChanges,
56-
controlBlur$
51+
controlBlur$,
52+
this.form.get('name').valueChanges
5753
)
58-
.debounceTime(300)
5954
.takeUntil(this.onDestroy$)
6055
.subscribe(() => this.checkForm());
6156
}
@@ -65,19 +60,16 @@ export class AddHeroComponent implements OnInit, OnDestroy, AfterViewInit {
6560
this.showErrors = true;
6661
}
6762
}
63+
// #enddocregion value-changes
64+
65+
ngOnDestroy() {
66+
this.onDestroy$.complete();
67+
}
6868

69-
save(model: any) {
69+
save(model: Hero) {
7070
this.heroService.addHero(model.name)
7171
.subscribe(() => {
7272
this.success = true;
73-
this.eventService.add({
74-
type: 'hero',
75-
message: 'Hero Added'
76-
});
7773
});
7874
}
79-
80-
ngOnDestroy() {
81-
this.onDestroy$.complete();
82-
}
8375
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// #docregion
2+
/*
3+
// #docregion basic-1
4+
import { Observable } from 'rxjs/Observable';
5+
import { Observer } from 'rxjs/Observer';
6+
7+
const heroObservable = Observable.create((observer: Observer) => {
8+
// notify observer of values
9+
observer.next('Mr. Nice');
10+
11+
// notify observer of an error
12+
observer.error(new Error('I failed the mission'));
13+
14+
// notify observer of completion
15+
observer.complete();
16+
});
17+
// #enddocregion basic-1
18+
// #docregion basic-2
19+
const heroObservable = Observable.create((observer: Observer) => {
20+
// notify observer of values
21+
observer.next('Mr. Nice');
22+
observer.next('Narco');
23+
});
24+
// #enddocregion basic-2
25+
// #docregion basic-3
26+
import { Subscription } from 'rxjs/Subscription';
27+
28+
const observer: Observer = {
29+
next: (hero) => { console.log(`Hero: ${hero}`); },
30+
error: (error) => { console.log(`Something went wrong: ${error}`); },
31+
complete: () => { console.log('All done here'); }
32+
};
33+
34+
const subscription = heroObservable.subscribe(observer);
35+
// #enddocregion basic-3
36+
// #docregion basic-4
37+
subscription.unsubscribe();
38+
// #enddocregion basic-4
39+
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// #docregion
2+
/*
3+
// #docregion basic-1
4+
import 'rxjs/add/operator/map';
5+
import { Observable } from 'rxjs/Observable';
6+
import { Observer } from 'rxjs/Observer';
7+
import { Subscription } from 'rxjs/Subscription';
8+
9+
const heroObservable = Observable.create((observer: Observer) => {
10+
// notify observer of values
11+
observer.next('Mr. Nice');
12+
observer.next('Narco');
13+
observer.complete();
14+
});
15+
16+
// map each hero value to new value
17+
const subscription = heroObservable
18+
.map(hero => `(( ${hero} ))` )
19+
.subscribe(
20+
// next
21+
(heroName) => { console.log(`Mapped hero: ${heroName}`); },
22+
// error
23+
() => {},
24+
// complete
25+
() => { console.log('Finished'); }
26+
);
27+
// #enddocregion basic-1
28+
// #docregion basic-2
29+
import 'rxjs/add/observable/interval';
30+
import 'rxjs/add/operator/interval';
31+
import { Observable } from 'rxjs/Observable';
32+
import { Subscription } from 'rxjs/Subscription';
33+
34+
const intervalObservable = Observable.interval(1000);
35+
36+
const subscription: Subscription = intervalObservable.take(5).subscribe();
37+
// #enddocregion basic-2

0 commit comments

Comments
 (0)