Следующая ситуация:
Предположим есть следующие классы (псевдокод TypeScript):
class Project {
id: number;
name: string;
stages: Stage[];
constructor() {
this.stages = []
}
}
class Stage {
id: number;
name: string;
jobs: Job[];
constructor() {
this.jobs= []
}
}
class Job {
id: number;
name: string;
}
У нас есть список проектов (Project[]), к которому привязаны этапы работ (Stage[]), к которым привязаны конкретные работы (Job[]).
Есть форма со списком проектов, можно провалиться в конкретный проект. На форме изменения проекта можно к проекту привязать (добавить) конкретные этапы и работы, отметив их чекбоксами. Но в классах Stage и Jobs нет атрибута checked: boolean. Как программно добавить атрибут? Как и где хранить объеты, у которых checked === true, чтобы потом put запросом обновить проект на бэкенде?
Вот небольшой пример компоненты на Angular:
@Component
export class ProjectFormComponent implements OnInit {
constructor (private projectService: ProjectService) { }
projects: Projects[];
onInit() {
this.projectService.getPorjects()
.subscribe(projects => this.projects = projects);
}
OnEditProjectButtonClick(project) {
this.projectService.getStageByProjectID(project)
.subscribe(stages => {
project.stages = stages (как то нужно добавить атрибут checked к объекту stages)
project.stages.filter(stage => stage.checked) (но у нас нет свойства checked)
}
}
}
Шаблон:
<ul>
<li *ngFor="let stage of project.stages">
<input type="checkbox" [checked] = "stage.checked" (вот здесь необходимо свойство checked, а его нет в классе)
{{stage.name}}
</li>
</ul>