Week 05 · Day 01 — Template-driven 表單:基礎
學習目標
- 認識兩大表單方式:Template-driven 與 Reactive
- 建立 Template-driven 登入表單
- 用
ngModel綁定與#form="ngForm"取得表單控制
重點
兩種表單方式 | 方式 | 作法 | 適用 | |------|------|------| | Template-driven | 主要在模板(HTML)用指令 | 簡單表單 | | Reactive | 主要在類別(TS)建立 FormGroup | 複雜、需大量驗證 |
前置:import FormsModule
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [FormsModule]
})
Template-driven 登入表單
<form #loginForm="ngForm" (ngSubmit)="onSubmit(loginForm)">
<div>
<label>Email:</label>
<input type="email"
name="email"
ngModel
required
email>
</div>
<div>
<label>Password:</label>
<input type="password"
name="password"
ngModel
required
minlength="6">
</div>
<button type="submit" [disabled]="loginForm.invalid">
Login
</button>
</form>
關鍵點
- name="xxx" + ngModel:讓輸入框成為表單的一部分
- required / email / minlength:內建驗證(HTML 屬性式)
- #loginForm="ngForm":把整個表單交給變數 loginForm
- loginForm.invalid:表單有任一欄位不合法時為 true
- (ngSubmit):送出表單時觸發
實作
- import
FormsModule - 建立登入表單(如上)
- 加上
onSubmit方法列印表單值 - 觀察:表單不完整時送出鈕是 disabled
作業
- import
FormsModule - 建立含 email + password 的登入表單
- 說明
loginForm.invalid的用途