Как добавить динамические c типы полей в Angular FormArray? - PullRequest
1 голос
/ 25 апреля 2020

Я пытаюсь создать форму типа редактора блоков в Angular. Я хочу, чтобы эта форма была просто одним массивом динамических c полей. Пока у меня есть следующий код, но кнопка для добавления различных полей всегда добавляет все поля вместо того, который должен. Как добавить в массив только указанное поле c? Каков наилучший подход для разработки такой формы?

Форма TS

storyForm = this.story.group({
    blocks: this.story.array([]),
});

get blocks() {
    return this.storyForm.get('blocks') as FormArray;
}

Кнопки для добавления различных полей в массив выше

addHeading() {
    this.blocks.push(this.story.group({
      heading: [''],
    }));
}  

addParagraph() {
    this.blocks.push(this.story.group({
      paragraph: [''],
    }));
}

HTML Шаблон

<div class="form-group" formArrayName="blocks">
    <div *ngFor="let piece of blocks.controls; let i=index">
        <textarea class="form-control" rows="8" placeholder="heading" formControlName="heading" ></textarea>
        <textarea class="form-control" rows="8" placeholder="paragraph" formControlName="paragraph" ></textarea>
    </div>
</div>
<button type="button" class="btn btn-secondary" (click)="addParagraph()">Add Paragraph</button>
<button type="button" class="btn btn-secondary" (click)="addHeading()">Add Heading</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...