private getFieldData()

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;
	}