import { Component, Input, Output, EventEmitter } from '@angular/core'; import { FormBase, ImageModel } from '../sui.util/sui.util.formBase'; import { ValidatiorService, ValidatorModal } from '../sui.util/sui.util.validatiorService'; @Component({ selector: 'sui-input', templateUrl: './sui.input.component.html', providers: [ValidatiorService] }) export class InputComponent { @Input() field: FormBase; @Output('valid') valid: EventEmitter = new EventEmitter(); validationMessage: string = ''; isValid: boolean = true; constructor(private _validator: ValidatiorService) { } validateField(field: FormBase) { let validationResponse = this._validator.checkFieldValid(field); if (validationResponse.valid) { this.valid.emit(true); this.validationMessage = ''; } else { this.validationMessage = validationResponse.errorMessage; } this.isValid = validationResponse.valid; } fileChange(event: any, field: FormBase) { let selectedFiles = event.srcElement.files; field.value = selectedFiles; if (field.accepts === 'image/*') { field.controlType = 'image'; let images: ImageModel[] = []; for (let i = 0; i < selectedFiles.length; i++) { let reader = new FileReader(); let image = new ImageModel(); console.log(selectedFiles[i]); image.name = selectedFiles[i].name; image.type = selectedFiles[i].type; reader.onload = function () { image.base64 = reader.result; }; reader.readAsDataURL(selectedFiles[i]); images.push(image); } field.value = images; } this.validateField(field); } }