From 12b04f145bae740e1971036b1e2dfc1bc224d17b Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Wed, 11 Jul 2018 14:38:47 +0800
Subject: [PATCH] Revert "框架调整"

---
 src/app/routes/pro/form/advanced-form/advanced-form.component.ts |  156 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 156 insertions(+), 0 deletions(-)

diff --git a/src/app/routes/pro/form/advanced-form/advanced-form.component.ts b/src/app/routes/pro/form/advanced-form/advanced-form.component.ts
new file mode 100644
index 0000000..f8a6004
--- /dev/null
+++ b/src/app/routes/pro/form/advanced-form/advanced-form.component.ts
@@ -0,0 +1,156 @@
+import { Component, OnInit } from '@angular/core';
+import { FormGroup, FormBuilder, Validators, FormArray } from '@angular/forms';
+
+@Component({
+  selector: 'app-advanced-form',
+  templateUrl: './advanced-form.component.html',
+})
+export class AdvancedFormComponent implements OnInit {
+  editIndex = -1;
+  editObj = {};
+
+  form: FormGroup;
+  users: any[] = [
+    { value: 'xiao', label: '���������' },
+    { value: 'mao', label: '���������' },
+  ];
+
+  constructor(private fb: FormBuilder) {}
+
+  ngOnInit() {
+    this.form = this.fb.group({
+      name: [null, [Validators.required]],
+      url: [null, [Validators.required]],
+      owner: [undefined, [Validators.required]],
+      approver: [null, [Validators.required]],
+      date_range: [null, [Validators.required]],
+      type: [null, [Validators.required]],
+      name2: [null, [Validators.required]],
+      summary: [null, [Validators.required]],
+      owner2: [null, [Validators.required]],
+      approver2: [null, [Validators.required]],
+      time: [null, [Validators.required]],
+      type2: [null, [Validators.required]],
+      items: this.fb.array([]),
+    });
+    const userList = [
+      {
+        key: '1',
+        workId: '00001',
+        name: 'John Brown',
+        department: 'New York No. 1 Lake Park',
+      },
+      {
+        key: '2',
+        workId: '00002',
+        name: 'Jim Green',
+        department: 'London No. 1 Lake Park',
+      },
+      {
+        key: '3',
+        workId: '00003',
+        name: 'Joe Black',
+        department: 'Sidney No. 1 Lake Park',
+      },
+    ];
+    userList.forEach(i => {
+      const field = this.createUser();
+      field.patchValue(i);
+      this.items.push(field);
+    });
+  }
+
+  createUser(): FormGroup {
+    return this.fb.group({
+      key: [null],
+      workId: [null, [Validators.required]],
+      name: [null, [Validators.required]],
+      department: [null, [Validators.required]],
+    });
+  }
+
+  //#region get form fields
+  get name() {
+    return this.form.controls.name;
+  }
+  get url() {
+    return this.form.controls.url;
+  }
+  get owner() {
+    return this.form.controls.owner;
+  }
+  get approver() {
+    return this.form.controls.approver;
+  }
+  get time_start() {
+    return this.form.controls.time_start;
+  }
+  get time_end() {
+    return this.form.controls.time_end;
+  }
+  get type() {
+    return this.form.controls.type;
+  }
+  get name2() {
+    return this.form.controls.name2;
+  }
+  get summary() {
+    return this.form.controls.summary;
+  }
+  get owner2() {
+    return this.form.controls.owner2;
+  }
+  get approver2() {
+    return this.form.controls.approver2;
+  }
+  get time() {
+    return this.form.controls.time;
+  }
+  get type2() {
+    return this.form.controls.type2;
+  }
+  get items() {
+    return this.form.controls.items as FormArray;
+  }
+  //#endregion
+
+  add() {
+    this.items.push(this.createUser());
+    this.edit(this.items.length - 1);
+  }
+
+  del(index: number) {
+    this.items.removeAt(index);
+  }
+
+  edit(index: number) {
+    if (this.editIndex !== -1 && this.editObj) {
+      this.items.at(this.editIndex).patchValue(this.editObj);
+    }
+    this.editObj = { ...this.items.at(index).value };
+    this.editIndex = index;
+  }
+
+  save(index: number) {
+    this.items.at(index).markAsDirty();
+    if (this.items.at(index).invalid) return;
+    this.editIndex = -1;
+  }
+
+  cancel(index: number) {
+    if (!this.items.at(index).value.key) {
+      this.del(index);
+    } else {
+      this.items.at(index).patchValue(this.editObj);
+    }
+    this.editIndex = -1;
+  }
+
+  _submitForm() {
+    for (const i in this.form.controls) {
+      this.form.controls[i].markAsDirty();
+      this.form.controls[i].updateValueAndValidity();
+    }
+    if (this.form.invalid) return;
+  }
+}

--
Gitblit v1.8.0