angularメモ帳

angular始めました。
動かすために調べたことをメモしています。

501 views

動的にフォームを生成する方法

component.ts

import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, FormArray, FormBuilder } from '@angular/forms';

@Component({
  selector: 'app-fields',
  templateUrl: './fields.component.html',
  styleUrls: ['./fields.component.css']
})
export class FieldsComponent implements OnInit {
  form = this.fb.group(
    {
      fields: this.fb.array([
        this.fb.group({
          name: [''],
          type: ['']
        })
      ])
    }
  );


  constructor(private fb: FormBuilder) { }

  get fields() {
    return this.form.get('fields') as FormArray;
  }

  ngOnInit(): void {

  }

  onClick() {
    this.fields.push(this.fb.group({
        name: [''],
        type: ['']
      }));
  }
}

component.html

<p>fields works!</p>
<button (click)="onClick()" type="button">フィールド追加</button>
<div [formGroup]="form">
  <div formArrayName="fields">
    <div *ngFor="let field of fields.controls; index as i">
      <div [formGroupName]="i">
        <div>フィールド名: <input type="text" formControlName="name"></div>
        <div>型: <input type="text" formControlName="type"></div>
      </div>
    </div>
  </div>
</div>

fromGroupNameは、単純なフォームなら以下のようにフォームグループの名前を書く。

今回は、フォームグループが配列なので、名前がインデックスになっているため、iをformGroupNameの名前としている。

Page 15 of 38.

前のページ 次のページ



[添付ファイル]

1.angular flex layoutについて.docx  


お問い合わせ

プロフィール

すぺぺぺ

自己紹介

本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。

サイト/ブログ

https://www.osumoi-stdio.com/novel/

ツイッター

@darkimpact0626