import { Directive, Inject, forwardRef, Input, OnChanges, OnDestroy } from '@angular/core'; import { Form } from './form'; import { InputBase } from '../inputs/inputBase'; @Directive({ selector: '[rd-form-data]' }) export class FormData { constructor(@Inject(forwardRef(() => Form)) private form: Form, @Inject(forwardRef(() => InputBase)) public input: InputBase) { this.form.addFormData(this); } @Input("rd-form-data") path; isValidFormData: boolean = true; getQueryItem = function () { return { key: this.path, value: this.input.model } }; clean = function () { this.input.onChange(null); }; } @Directive({ selector: '[rd-form-data-isValid]' }) export class FormDataIsValid implements OnChanges, OnDestroy { constructor(@Inject(forwardRef(() => Form)) private form: Form, @Inject(forwardRef(() => FormData)) private formData: FormData) { } @Input("rd-form-data-isValid") isValid: boolean; ngOnChanges(changes) { if (changes.isValid) this.formData.isValidFormData = changes.isValid.currentValue; } ngOnDestroy() { this.form.removeFormData(this.formData); } }