Form Submit 行為
FormsModule 與表單提交
FormsModule 的主要功能是處理表單控制項的雙向綁定和驗證,它不會自動阻止表單的預設提交行為。
表單提交行為示例
1. 會觸發瀏覽器預設提交行為
即使引入了 FormsModule,但沒有處理提交事件:
<form>
<input type="text" [(ngModel)]="name">
<button type="submit">Submit</button>
</form>
2. 處理按鈕點擊但仍會提交
雖然處理了按鈕的 click 事件,表單還是會執行預設提交:
<form>
<input type="text" [(ngModel)]="name">
<button type="submit" (click)="onSubmit()">Submit</button>
</form>
3. 正確處理表單提交的方式
使用 Angular 的 ngSubmit 事件:
<form (ngSubmit)="onSubmit()">
<input type="text" [(ngModel)]="name">
<button type="submit">Submit</button>
</form>
處理表單提交的兩種方式
1. 使用 ngSubmit
<form (ngSubmit)="onSubmit()">
<!-- form content -->
</form>
onSubmit() {
// 處理提交邏輯
// 不需要 preventDefault()
}
2. 使用一般的 submit 事件
<form (submit)="onSubmit($event)">
<!-- form content -->
</form>
onSubmit(event: Event) {
event.preventDefault();
// 處理提交邏輯
}
建議做法
優先使用
(ngSubmit)
避免只依賴按鈕的 click 事件
Last updated