Reactive Forms 表單提交
表單提交基本設定
在 Reactive Forms 中,表單提交的設定方式和 Template-driven Forms 類似,但有一些重要區別:
<form [formGroup]="loginForm" (ngSubmit)="onSubmit()">
<!-- 表單控制項 -->
<button type="submit">Login</button>
</form>
與 Template-driven Forms 最大的不同點是:不需要傳遞表單參數。
這是因為在 Reactive Forms 中,表單模型完全定義在 TypeScript 中,元件類別可以直接存取表單值,無需從範本傳入。
在元件中處理提交
在元件類別中,可以直接存取表單值:
onSubmit() {
const enteredEmail = this.loginForm.value.email;
const enteredPassword = this.loginForm.value.password;
console.log(enteredEmail, enteredPassword);
// 可以在這裡進行表單重置
this.loginForm.reset();
}
直接存取整個表單值
也可以直接使用 loginForm.value
來取得整個表單的值物件:
onSubmit() {
console.log(this.loginForm.value);
// 輸出: { email: '使用者輸入的值', password: '使用者輸入的值' }
}

提交前檢查表單有效性
在提交前,通常會檢查表單是否有效:
onSubmit() {
// 檢查表單是否有效
if (this.loginForm.invalid) {
return; // 如果無效,不處理提交
}
// 處理有效表單
console.log(this.loginForm.value);
}
這樣設計的好處是,可以完全在 TypeScript 中控制表單邏輯,提供更強大的型別檢查和更好的測試能力。
Last updated