in src/app/customers/form/customFields/custom-fields.component.ts [63:123]
private buildFormGroup(): FormGroup {
const group: FormGroup = this.formBuilder.group({});
if (!this._formData || !this.catalog) {
return group;
}
for (const field of this.catalog.fields) {
const value = this.findValue(field.identifier);
const valueString: string = value && value.value ? value.value : '';
const formControl: FormControl = new FormControl({value: valueString, disabled: false});
const validators: ValidatorFn[] = [];
switch (field.dataType) {
case 'TEXT': {
validators.push(...this.buildTextValidators(field));
break;
}
case 'NUMBER': {
formControl.setValue(valueString.length ? Number(valueString) : undefined);
validators.push(...this.buildNumberValidators(field));
break;
}
case 'DATE': {
formControl.setValue(valueString.length ? valueString.substring(0, 10) : '');
break;
}
case 'SINGLE_SELECTION': {
formControl.setValue(valueString.length ? Number(valueString) : undefined);
break;
}
case 'MULTI_SELECTION': {
const optionValues = valueString.length ? valueString.split(',').map(optionValue => Number(optionValue)) : [];
const foundOptions = field.options
.filter((option: Option) => optionValues.indexOf(option.value) > -1);
formControl.setValue(foundOptions);
break;
}
default:
break;
}
if (field.mandatory) {
validators.push(Validators.required);
}
formControl.setValidators(validators);
group.addControl(field.identifier, formControl);
}
return group;
}