import { Component, EventEmitter, Input, Output } from '@angular/core'; import addSeconds from 'date-fns/add_seconds'; import format from 'date-fns/format'; @Component({ selector: 'count-down', exportAs: 'countDown', template: ` `, }) export class CountDownComponent { @Input() config: {}; /** * 目标时间 */ @Input() set target(value: number | Date) { this.config = { template: `$!h!:$!m!:$!s!`, stopTime: typeof value === 'number' ? addSeconds(new Date(), value).valueOf() : format(value, 'x'), }; } @Output() readonly begin = new EventEmitter(); @Output() readonly notify = new EventEmitter(); @Output() readonly end = new EventEmitter(); _start() { this.begin.emit(); } _notify(time: number) { this.notify.emit(time); } _finished() { this.end.emit(); } }