昨天我們看了 一長串的表單使用範例
都是經過理解消化後所寫出來的 code ,那麼今天就來聊一聊消化的過程吧!
一開始 建立一個新的 form 表單,它會是一組的 group
export class FormComponent implements OnInit {
  form!: FormGroup;
}
form 後面加上
!是 Typescript 2.0 的non-null
可參考 非空斷言運算子( ! ) > Non-null assertion operator
一開始 form 裡 沒有給他任何的屬性與值,所以初始化時可使用 FormBuilder 來生成一個表單,在 formBuilder.group 裡會自動產生一個 FormControl 讓預設的值塞入,預設為空值
this.form = this.formBuilder.group({
  name: "",
  phone: "",
});
對應到 html 上的
<form [formGroup]="form">
  <div>
    <label for="">name:</label>
    <input formControlName="name" type="text" />
  </div>
  <div>
    <label for="">phone:</label>
    <input formControlName="phone" type="tel" />
  </div>
</form>
注意:form 表單裡的 FormControl 必須與 template 裡的 formControlName 互相對應,不然會報錯
如圖: 這是 form 裡沒有命名為 phone 的 FormControl,所以出現了以下錯誤,這時後會覺得 Angular 非常的貼心 XD
因為我已經知道我的 form 表單裡會需要有哪些內容
所以我在一開始的時後就直接將 form 裡所需操控的部份設定好
export class FormComponent implements OnInit {
  form: FormGroup = new FormGroup({
    name: new FormControl(),
    phone: new FormControl(),
  });
}
預設為空值,若需要帶預設值的時後會在 ngOnInit 裡讀到值後再將值變更塞入
ngOnInit(): void {
   this.form.setValue({
    name: 'Mandy',
    phone: '0912345678',
  });
}
.ts
this.form.value;
.ts
// 取得 name 的值
this.form.get("name").value;
參考資料:
明天就來說說 formArray 的部份