# ReactForm 表單
# 常用的 Directives
- FormControlName
- FormGroupName
- FormArrayName
建立一個FormArray
export class ReactFormComponent {
form;
constructor(private fb: FormBuilder) {
this.form = this.fb.array([
this.buildGroup();
]);
}
buildGroup(): FormGroup {
return this.fb.group({
firstName: ['', [Validators.required, Validators.minLength(5)]],
nackName: 'ABC',
interest: this.fb.group({
movie: '',
music: '',
sports: '',
games: ''
})
});
}
add() {
this.form.push(this.buildGroup());
}
}
html 如何綁定該 formGroup
<form [formGroup]="form">
<!-- form.controls 就是建立 formBuilder 裡面的 formControl -->
<div class="profile" *ngFor="let profile of form.controls; let i = index" [formGroupName]="i">
<div class="form-group">
<label>請輸入姓名</label>
<input type="text" class="form-control" formControlName="firstName" placeholder="請輸入姓名">
<!-- 欄位 errorMsg -->
<div *ngIf="profile.controls.firstName.errors">
<span *ngIf="profile.controls.firstName.errors.reqiured">必填項目</span>
<span *ngIf="profile.controls.firstName.errors.minlength">欄位長度不足</span>
</div>
</div>
<div class="form-group">
<label>請輸入綽號</label>
<input type="text" class="form-control" formControlName="nackName" placeholder="請輸入綽號">
</div>
<h3>請輸入興趣</h3>
<div class="form-group" formControlName="interest">
<label>
<input type="checkbox" formControlName="movie">電影
</label>
<label>
<input type="checkbox" formControlName="music">音樂
</label>
<label>
<input type="checkbox" formControlName="sports">運動
</label>
<label>
<input type="checkbox" formControlName="games">遊戲
</label>
</div>
</div>
</form>