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 {
25 // Stub functions required by ControlValueAccessor
26 propagateChange = (_: any) => {};
27 propagateTouch = () => {};
32 changeListener(): void {
33 this.propagateChange(this.period + ' ' + this.unit);
36 writeValue(value: string) {
38 this.period = value.split(' ')[0];
39 this.unit = value.split(' ')[1];
43 registerOnChange(fn) {
44 this.propagateChange = fn;
47 registerOnTouched(fn) {
48 this.propagateTouch = fn;