import { Component, ViewChild, AfterViewInit } from '@angular/core'; import { RdComponent } from '../../base/rdComponent'; import { RdLib } from '../../base/rdLib'; @Component({ selector: 'rd-form', template: `
` }) export class Form extends RdComponent { private formDataList = []; @ViewChild("footer") footer; showFooter = false; ngAfterViewInit() { if (this.footer.nativeElement.children.length) this.showFooter = true; } addFormData = function (formData) { this.formDataList.push(formData); }; removeFormData = function (formData) { for (let i in this.formDataList) { let item = this.formDataList[i]; if (item == formData) this.formDataList.splice(parseInt(i), 1); } } validate = function () { var result = true; for (var i of this.formDataList) { if (!i.input.isValid()) result = false; } return result; } getQuery() { var query = {}; for (var i of this.formDataList) { if (i.isValidFormData) { var item = i.getQueryItem(); if (item.value === undefined || item.value === null) item.value = null; if (!item.key) { if (this.formDataList.length == 1) return item.value; else this.error("There should be only one 'rd-form-data' without a key!"); } else RdLib.objectOperations.deepSet(query, item.key, item.value); } } return query; }; clean() { for (var i of this.formDataList) i.clean(); }; }