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