// TODO: Add unit tests for this file. // tslint:disable: no-output-native // #docregion import { Component, Output, OnInit, EventEmitter, NgModule } from '@angular/core'; import { Observable } from 'rxjs'; // #docregion eventemitter @Component({ selector: 'app-zippy', template: `
Toggle
`, }) export class ZippyComponent { visible = true; @Output() open = new EventEmitter(); @Output() close = new EventEmitter(); toggle() { this.visible = !this.visible; if (this.visible) { this.open.emit(null); } else { this.close.emit(null); } } } // #enddocregion eventemitter // #docregion pipe @Component({ selector: 'async-observable-pipe', template: `
observable|async: Time: {{ time | async }}
` }) export class AsyncObservablePipeComponent { time = new Observable(observer => { setInterval(() => observer.next(new Date().toString()), 1000); }); } // #enddocregion pipe // #docregion router import { Router, NavigationStart } from '@angular/router'; import { filter } from 'rxjs/operators'; @Component({ selector: 'app-routable', templateUrl: './routable.component.html', styleUrls: ['./routable.component.css'] }) export class Routable1Component implements OnInit { navStart: Observable; constructor(private router: Router) { // Create a new Observable that publishes only the NavigationStart event this.navStart = router.events.pipe( filter(evt => evt instanceof NavigationStart) ) as Observable; } ngOnInit() { this.navStart.subscribe(evt => console.log('Navigation Started!')); } } // #enddocregion router // #docregion activated_route import { ActivatedRoute } from '@angular/router'; @Component({ selector: 'app-routable', templateUrl: './routable.component.html', styleUrls: ['./routable.component.css'] }) export class Routable2Component implements OnInit { constructor(private activatedRoute: ActivatedRoute) {} ngOnInit() { this.activatedRoute.url .subscribe(url => console.log('The URL changed to: ' + url)); } } // #enddocregion activated_route // #docregion forms import { FormGroup } from '@angular/forms'; @Component({ selector: 'my-component', template: 'MyComponent Template' }) export class MyComponent implements OnInit { nameChangeLog: string[] = []; heroForm: FormGroup; ngOnInit() { this.logNameChange(); } logNameChange() { const nameControl = this.heroForm.get('name'); nameControl.valueChanges.forEach( (value: string) => this.nameChangeLog.push(value) ); } } // #enddocregion forms @NgModule({ declarations: [ZippyComponent, AsyncObservablePipeComponent, Routable1Component, Routable2Component, MyComponent] }) export class AppModule { }