diff --git a/src/app/dialogs/dialog-change-data/dialog-change-data.component.html b/src/app/dialogs/dialog-change-data/dialog-change-data.component.html index 88e053b..e7f7262 100644 --- a/src/app/dialogs/dialog-change-data/dialog-change-data.component.html +++ b/src/app/dialogs/dialog-change-data/dialog-change-data.component.html @@ -1,15 +1,16 @@

Change referenced data value{{dataSet.length > 1 ? 's' : ''}}

- + {{data.id}} - - Value is required - Value can not be a negative number + + + Value is required + Value can not be a negative number No referenced data found - diff --git a/src/app/dialogs/dialog-change-data/dialog-change-data.component.ts b/src/app/dialogs/dialog-change-data/dialog-change-data.component.ts index 580e76a..508dc9e 100644 --- a/src/app/dialogs/dialog-change-data/dialog-change-data.component.ts +++ b/src/app/dialogs/dialog-change-data/dialog-change-data.component.ts @@ -1,5 +1,5 @@ import {Component, Inject} from '@angular/core'; -import {FormControl, ValidatorFn, Validators} from '@angular/forms'; +import {FormArray, FormControl, ValidatorFn, Validators} from '@angular/forms'; import {MAT_DIALOG_DATA} from '@angular/material/dialog'; export interface DataSet { @@ -19,17 +19,22 @@ export interface Data { export class DialogChangeDataComponent { public dataSet: Array; - public valueCtrl: FormControl; + public formArray: FormArray; constructor( @Inject(MAT_DIALOG_DATA) public data: DataSet, ) { this.dataSet = new Array(); - data.dataSet.forEach((value, id) => this.dataSet.push({id, value})); - this.valueCtrl = new FormControl('', [ - Validators.required, - this.validValue() - ]); + this.formArray = new FormArray([]); + + data.dataSet.forEach((value, id) => { + this.dataSet.push({id, value}); + const valueCtrl = new FormControl(value, [ + Validators.required, + this.validValue() + ]); + this.formArray.push(valueCtrl); + }); } private validValue(): ValidatorFn { @@ -41,4 +46,15 @@ export class DialogChangeDataComponent { return ({validMultiplicity: true}) }; } + + public getControl(index: number): FormControl { + return this.formArray.at(index) as FormControl; + } + + public onSave(): Array { + return this.dataSet.map((item, index) => ({ + id: item.id, + value: this.formArray.at(index).value + })); + } }