2 * <eg-interval-input [(ngModel)]="interval">
5 import {Component, OnInit, Input, Output, ViewChild,
6 TemplateRef, EventEmitter, ElementRef, forwardRef} from '@angular/core';
7 import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
8 import {Observable, of, Subject} from 'rxjs';
9 import {map, tap, reduce, mergeMap, mapTo, debounceTime, distinctUntilChanged, merge, filter} from 'rxjs/operators';
12 selector: 'eg-interval-input',
13 templateUrl: './interval-input.component.html',
15 provide: NG_VALUE_ACCESSOR,
16 useExisting: forwardRef(() => IntervalInputComponent),
20 export class IntervalInputComponent implements ControlValueAccessor, OnInit {
22 @Input() initialValue: string;
23 @Output() onChange = new EventEmitter<string>();
28 // Stub functions required by ControlValueAccessor
29 propagateChange = (_: any) => {};
30 propagateTouch = () => {};
33 if (this.initialValue) {
34 this.writeValue(this.initialValue);
38 changeListener(): void {
39 this.propagateChange(this.period + ' ' + this.unit);
40 this.onChange.emit(this.period + ' ' + this.unit);
43 writeValue(value: string) {
45 this.period = value.split(' ')[0];
46 this.unit = value.split(' ')[1];
50 registerOnChange(fn) {
51 this.propagateChange = fn;
54 registerOnTouched(fn) {
55 this.propagateTouch = fn;