@kachurinets

Angular: Как деструктизировать код в конструкторе модели данных?

Есть такой класс
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. Как сделать так, чтобы уникнуть дублирование кода? Думал, вынести данную функцию в сервис, но еще такого не встречал, что сервис инжектируется в к конструктор модели? Как правильно сделать?
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@NeoSimvolist
Правильный способ не городить логику в модель, а выносить ее в менеджер (он же сервис). Саму модель держать предельно простой, максимум вычисляемые поля. У каждой модели свой менеджер. И когда понадобятся связи между моделями будешь инжектить менеджеры в менеджеры. Поверь, такой подход окупится при развитии проекта.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы