in lib/modeling/modeler.ts [213:242]
private getFieldData<TData = any>(entityField:Field, entityFieldRawData:any, options: DataOptions = defaultDataOptions):TData | Observable<TData | Array<TData>> {
if (entityFieldRawData === undefined || entityFieldRawData === null) {
let fieldRepository:ReadonlyRepository<EntityModelBase> = this.paris.getRepository(<DataEntityType>entityField.type);
let fieldValueObjectType:EntityConfigBase = !fieldRepository && valueObjectsService.getEntityByType(<DataEntityType>entityField.type);
let defaultValue:any = fieldRepository && fieldRepository.modelConfig.getDefaultValue()
|| fieldValueObjectType && fieldValueObjectType.getDefaultValue()
|| (entityField.isArray ? [] : entityField.defaultValue !== undefined && entityField.defaultValue !== null ? cloneDeep(entityField.defaultValue) : null);
if ((defaultValue === undefined || defaultValue === null) && entityField.required)
throw new Error(` Field ${entityField.id} is required but it's ${entityFieldRawData}.`);
entityFieldRawData = defaultValue;
}
if (entityFieldRawData !== undefined && entityFieldRawData !== null && !(entityFieldRawData instanceof ModelBase)) {
const fieldData$ = this.getSubModel<TData>(entityField, entityFieldRawData, options);
if (fieldData$)
return fieldData$;
else {
return entityField.isArray
? entityFieldRawData
? entityFieldRawData.map((elementValue: any) => DataTransformersService.parse(entityField.type, elementValue))
: []
: DataTransformersService.parse(entityField.type, entityFieldRawData);
}
}
else
return entityFieldRawData;
}