Это моя версия Angular CLI:
Angular CLI: 7.3.9
Node: 12.2.0
OS: win32 x64
Angular: 8.0.2
При создании приложения Angular 8 я пытаюсь использовать вложенные группы FormGroups, которые соответствуют следующему объекту:
const Boilerplate: any = {
1: {
desc: "section1",
content: {
1: "question 1.a:",
2: "question 1.b:",
3: "question 1.c"
}
},
2: {
desc: "section2",
content: {
4: "question 2.a:",
5: "question 2.b:",
6: "question 2.c",
7: "question 2.d"
}
}
}
Существует внутренняя FormGroup FormControls для раздела 1 и раздела 2, а также внешняя FormGroup, содержащая две внутренние формы. Это определено в component.ts.
В component.html я пытаюсь перебрать внутренние FormGroups внешней FormGroup и распечатать внутренние FormControls. Вот код, который у меня есть:
<form [formGroup]="sectionGroup">
<div *ngIf="boilerplate">
<div *ngFor="let section of boilerplate | keyvalue">
{{ boilerplate[section.key].desc }}
<div formGroupName="{{section.key}}">
<div *ngFor="let question of boilerplate[{{section.key}}]">
<-- things -->
</div>
</div>
</div>
</div>
Строка <div *ngFor="let question of boilerplate[{{section.key}}]">
завершается с ошибкой:
Неожиданный токен {, ожидаемый идентификатор, ключевое слово или строка
Я пробовал следующие решения, ни одно из которых не помогло мне:
<div *ngFor="let question of {{boilerplate}}.{{section.key}}">
<div *ngFor="let question of {{boilerplate[section.key]}}">
<div *ngFor="let question of {{boilerplate[{{section.key}}]}}">
<td *ngFor="let question of Section">{{boilerplate[[section.key]]}}</td>
Я пробовал множество других комбинаций и порядков {} и [], и теперь я понимаю, что вложенная интерполяция не разбирается.
У кого-нибудь есть предложения, как мне этого добиться? Я использую вложенные FormGroups, потому что, возможно, у меня будут дополнительные слои разделов в будущем. Формат объекта Boilerplate можно изменить, если это сделает проблему разрешимой (потому что я сам ее определил).
EDIT
Решение этой проблемы было решено следующим образом:
<div *ngFor="let question of boilerplate[section.key].content | keyvalue">
{{question.value}}
</div>