Есть такой класс
export class Street {
glob_id: string;
id: string;
is_edited: string;
parents_levels: Array<number>;
parents_names: Array<string>;
name: string;
region_id: string;
region: string;
county: string;
area: string;
city: string;
city_district: string;
place: string;
street: string;
additional_territory: string;
additional_territory_subject: string;
constructor(street?) {
street = street || {};
this.glob_id = street.glob_id || '';
this.id = street.glob_id || '';
this.is_edited = street.is_edited || '';
this.name = street.name || '';
this.parents_names = JSON.parse(street.parents_names) || [];
this.parents_levels = JSON.parse(street.parents_levels) || [];
this.region_id = street.region_id || [];
for (let i = 0; i < this.parents_levels.length; i++) {
switch (+this.parents_levels[i]) {
case 1:
this.region = this.parents_names[i];
break;
case 2:
this.county = this.parents_names[i];
break;
case 3:
this.area = this.parents_names[i];
break;
case 4:
this.city = this.parents_names[i];
break;
case 5:
this.city_district = this.parents_names[i];
break;
case 6:
this.place = this.parents_names[i];
break;
case 90:
this.additional_territory = this.parents_names[i];
break;
case 91:
this.additional_territory_subject = this.parents_names[i];
break;
}
}
}
}
Дело в том, что нужно сделать еще несколько сущностей, к примеру Сity, Region и т.д. В каждой сущности повторяется конструкция switch case. Как сделать так, чтобы уникнуть дублирование кода? Думал, вынести данную функцию в сервис, но еще такого не встречал, что сервис инжектируется в к конструктор модели? Как правильно сделать?