private getSubModel()

in lib/modeling/modeler.ts [244:269]


	private getSubModel<TData extends ModelBase = ModelBase>(entityField:Field, value:any, options: DataOptions = defaultDataOptions):Observable<TData | Array<TData>>{
		let repository:ReadonlyRepository<EntityModelBase> = this.paris.getRepository(<DataEntityType>entityField.type);
		let valueObjectType:EntityConfigBase = !repository && valueObjectsService.getEntityByType(<DataEntityType>entityField.type);

		if (!repository && !valueObjectType)
			return null;

		let data$:Observable<TData | Array<TData>>;

		const getItem = repository
			? Modeler.getEntityItem.bind(null, repository)
			: this.getValueObjectItem.bind(null, valueObjectType);

		if (entityField.isArray) {
			if (value.length) {
				let propertyMembers$: Array<Observable<TData>> = value.map((memberData: any) => getItem(memberData, options));
				data$ = combineLatest(propertyMembers$);
			}
			else
				data$ = of([]);
		}
		else
			data$ = getItem(value, options);

		return data$;
	}