argos/dmp-admin/src/app/models/CompositeField.ts

36 lines
1.2 KiB
TypeScript

import { FormGroup } from '@angular/forms';
import { JsonSerializer } from '../utilities/JsonSerializer';
import { Serializable } from './interfaces/Serializable';
import { BaseModel } from './BaseModel';
import {Field} from './Field'
export class CompositeField extends BaseModel implements Serializable<CompositeField> {
public fields:Array<Field> = new Array<Field>();
public multiplicity:number;
public id:string;
public ordinal:number;
fromJSONObject(item:any):CompositeField{
this.fields = new JsonSerializer<Field>().fromJSONArray(item.fields,Field);
this.multiplicity = item.multiplicity;
this.id = item.id;
this.ordinal = item.ordinal;
return this;
}
buildForm():FormGroup{
let formGroup = this.formBuilder.group({
multiplicity:[this.multiplicity],
id:[this.id],
ordinal:[this.ordinal]
});
let fieldsFormArray = new Array<FormGroup>();
this.fields.forEach(item => {
let form: FormGroup = item.buildForm();
fieldsFormArray.push(form)
})
formGroup.addControl('fields', this.formBuilder.array(fieldsFormArray));
return formGroup;
}
}