import { Component, Input } from '@angular/core'; import { AbmList } from '../../interface/abm-list.interface'; import { FormControl } from '@angular/forms'; @Component({ selector: 'kit-abm-list-input', templateUrl: './abm-list-input.component.html' }) export class AbmListInputComponent { @Input() formControl!: FormControl; @Input() indexAbm! : number; private _abmListInput!:AbmList; public constructor(){} @Input() public set abmListInput(abmListInput: AbmList) { this._abmListInput = abmListInput; if (abmListInput.dynamicError && abmListInput.errors && this._abmListInput.inputIndex !== undefined && this.indexAbm === this._abmListInput.inputIndex) { const error = abmListInput.errors[0]; this.formControl.setErrors({ [error.errorValidator]: true }); } } public get abmListInput() { return this._abmListInput; } public get abmErrorDescription() { let message = ''; if (this.formControl.errors && this._abmListInput.errors) { const error = {...this.formControl.errors}; const errorKey = Object.keys(error)[0]; const findErrorDescription = this._abmListInput.errors.find( e => e.errorValidator === errorKey )?.errorDescription; message = findErrorDescription || ''; } return message; } isControlRequired(): boolean { if (this.formControl && this.formControl.validator) { const validator = this.formControl.validator({} as any); return !!(validator && validator['required']); } return false; } }