* boilerplate, gulpfile, quickstart * move ts files up to cookbooks * move rest of ts files * fix tsconfig, default build task, json file * fix js examples * fix webpack example * remove a2docs.css references * fix aot examples * fix webpack run task * fix cb-i18n * fix upgrade examples * fix unit tests * fix comment in deployment index * removed unused typings.json * fix plunkers * fix js example paths * fix ts quickstart/setup prose * add src folder note to setup * broadly replace app/ -> src/app/ * broadly replace main.ts * broadly replaced index.html * broadly replace tsconfig * replace systemjs * fix filetrees * Minor prose fixes to aot, i18n cookbooks * remove char harp was complaining about * update new reactive forms example * fix quickstart jade error * fix mistakes uncovered by CI * fix bad filename errors * edit style guide 04-06 rule to use src * add changelog * Incorporate Jesus's feedback * fix snippet headers in toh1/2 * chore: tweak changelog and setup text
38 lines
894 B
TypeScript
38 lines
894 B
TypeScript
// #docregion
|
|
import { Component, OnDestroy, OnInit } from '@angular/core';
|
|
|
|
@Component({
|
|
selector: 'countdown-timer',
|
|
template: '<p>{{message}}</p>'
|
|
})
|
|
export class CountdownTimerComponent implements OnInit, OnDestroy {
|
|
|
|
intervalId = 0;
|
|
message = '';
|
|
seconds = 11;
|
|
|
|
clearTimer() { clearInterval(this.intervalId); }
|
|
|
|
ngOnInit() { this.start(); }
|
|
ngOnDestroy() { this.clearTimer(); }
|
|
|
|
start() { this.countDown(); }
|
|
stop() {
|
|
this.clearTimer();
|
|
this.message = `Holding at T-${this.seconds} seconds`;
|
|
}
|
|
|
|
private countDown() {
|
|
this.clearTimer();
|
|
this.intervalId = window.setInterval(() => {
|
|
this.seconds -= 1;
|
|
if (this.seconds === 0) {
|
|
this.message = 'Blast off!';
|
|
} else {
|
|
if (this.seconds < 0) { this.seconds = 10; } // reset
|
|
this.message = `T-${this.seconds} seconds and counting`;
|
|
}
|
|
}, 1000);
|
|
}
|
|
}
|