import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormControl } from "@angular/forms"; import { ValidationComponent } from '../validation/validation.component'; import { ValidatableComponent } from './../validation/validatable.component'; import 'rxjs/add/operator/debounceTime'; import template from "./input.component.html"; @Component({ selector: 'sdc-input', template: template, }) export class InputComponent extends ValidatableComponent implements OnInit { @Output('valueChange') public baseEmitter: EventEmitter = new EventEmitter(); @Input() public label: string; @Input() public value: any; @Input() public name: string; @Input() public classNames: string; @Input() public disabled: boolean; @Input() public type: string; @Input() public placeHolder: string; @Input() public required: boolean; @Input() public minLength: number; @Input() public maxLength: number; @Input() public debounceTime: number; @Input() public testId: string; protected control: FormControl; constructor() { super(); this.control = new FormControl('', []); this.debounceTime = 0; this.placeHolder = ''; this.type = 'text'; } ngOnInit() { this.control.valueChanges. debounceTime(this.debounceTime) .subscribe((newValue: any) => { this.baseEmitter.emit(this.value); }); } public getValue(): any { return this.value; } onKeyPress(value: string) { this.valueChanged(this.value); } }