Я пытаюсь разработать веб-приложение, которое отображает ряд вопросов для пользователя.Вопросы разделены на основе категорий .Приложение разработано с использованием Angular6.Вопросы выбираются с помощью бэкэнд-сервиса REST.На стороне клиента создается интерфейс, который моделирует структуру ответа REST, которая имеет несколько подынтерфейсов для поддержки сложной внутренней структуры.Ответ будет отображен как Список этого интерфейса.Ниже приводится структура интерфейса.
Мое намерение состоит в том, чтобы выполнить итерацию List<ICategoryQuestion>
, отобразить вопросы со всемиопций и заполните selectedAnswer выбранной пользователем опцией.
Поскольку я следую подходу ReactiveForm во всем приложении, я подумал о создании FormGroup спохожая структура, если предположить, что это поможет мне легко отобразить selectedAnswer обратно в список.Это поможет отправить Анкету, используя другой вызов REST, который снова принимает List<ICategoryQuestion>
.
Теперь реальная задача здесь - создать FormGroup с аналогичной структурой,Сначала я создал FormGroup, которая содержит все List<ICategoryQuestion>
.
mainFormGroup: FormGroup = this.formBuilder.group({
categoryQuestionList: this.formBuilder.array([]);
});
Теперь мне нужно получить контроль над массивом (categoryQuestionList), а затем заполнить его категориями.
код похож на другой.
let categoryQuestionListControl = <FormArray> this.mainFormGroup.get("categoryQuestionList");
//iterate the **`List<ICategoryQuestion>`** create a FormGroup //representing each ICategoryQuestion and push it to the `categoryQuestionListControl`.
iterate list{
categoryQuestionListControl.push(this.getCategoryQuestionFormGroup(categoryQuestion));
}
Теперь снова у categoryQuestionFormGroup есть List<IQuestionAnswer>
, который снова внутренне содержит массив IOptions сделать код более сложным.
Какой, на ваш взгляд, идеальный способ справиться с подобными ситуациями?Должен ли я использовать Template Driven подход здесь?Я даже сомневаюсь, что я придерживаюсь правильного подхода, поскольку я новичок в Angulat 2 +.
Пожалуйста, посоветуйте.