- Angular 教程
- Angular - 首頁
- Angular - 概述
- Angular - 功能
- Angular - 優點與缺點
- Angular 基礎
- Angular - 環境搭建
- Angular - 第一個應用
- Angular - MVC 架構
- Angular 元件
- Angular - 元件
- Angular - 元件生命週期
- Angular - 檢視封裝
- Angular - 元件互動
- Angular - 元件樣式
- Angular - 巢狀元件
- Angular - 內容投影
- Angular - 動態元件
- Angular - 元素
- Angular 模板
- Angular - 模板
- Angular - 文字插值
- Angular - 模板語句
- Angular - 模板中的變數
- Angular - SVG 作為模板
- Angular 繫結
- Angular - 繫結及其型別
- Angular - 資料繫結
- Angular - 事件繫結
- Angular - 屬性繫結
- Angular - 屬性繫結
- Angular - 類和樣式繫結
- Angular 指令
- Angular - 指令
- Angular - 內建指令
- Angular 管道
- Angular - 管道
- Angular - 使用管道轉換資料
- Angular 依賴注入
- Angular - 依賴注入
- Angular HTTP 客戶端程式設計
- Angular - 服務
- Angular - HTTP 客戶端
- Angular - 請求
- Angular - 響應
- Angular - GET
- Angular - PUT
- Angular - DELETE
- Angular - JSON-P
- Angular - 使用 HTTP 進行 CRUD 操作
- Angular 路由
- Angular - 路由
- Angular - 導航
- Angular - Angular Material
- Angular 動畫
- Angular - 動畫
- Angular 表單
- Angular - 表單
- Angular - 表單驗證
- Angular Service Workers & PWA
- Angular - Service Workers & PWA
- Angular 測試
- Angular - 測試概述
- Angular NgModule
- Angular - 模組介紹
- Angular 高階
- Angular - 身份驗證和授權
- Angular - 國際化
- Angular - 可訪問性
- Angular - Web Workers
- Angular - 伺服器端渲染
- Angular - Ivy 編譯器
- Angular - 使用 Bazel 構建
- Angular - 向後相容性
- Angular - 響應式程式設計
- Angular - 指令和元件之間的資料共享
- Angular 工具
- Angular - CLI
- Angular 其他
- Angular - 第三方控制元件
- Angular - 配置
- Angular - 顯示資料
- Angular - 裝飾器和元資料
- Angular - 基本示例
- Angular - 錯誤處理
- Angular - 測試和構建專案
- Angular - 生命週期鉤子
- Angular - 使用者輸入
- Angular - 最新動態?
- Angular 有用資源
- Angular - 快速指南
- Angular - 有用資源
- Angular - 討論
Angular - 表單
表單用於處理使用者輸入資料。Angular 支援兩種型別的表單:模板驅動表單和響應式表單。本節詳細解釋 Angular 8 表單。
模板驅動表單
模板驅動表單是使用模板中的指令建立的。它主要用於建立簡單的表單應用程式。讓我們簡要了解如何建立模板驅動表單。
配置表單
在瞭解表單之前,讓我們學習如何在應用程式中配置表單。要啟用模板驅動表單,首先需要在app.module.ts中匯入FormsModule。如下所示:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
//import FormsModule here
import { FormsModule } from '@angular/forms';
imports: [
BrowserModule,
AppRoutingModule,
FormsModule //Assign FormsModule
],
一旦匯入FormsModule,應用程式就準備好進行表單程式設計了。
建立簡單的表單
讓我們在 Angular 中建立一個示例應用程式(template-form-app)來學習模板驅動表單。
開啟命令提示符並使用以下命令建立新的 Angular 應用程式:
cd /go/to/workspace ng new template-form-app cd template-form-app
在AppComponent中配置FormsModule,如下所示:
...
import { FormsModule } from '@angular/forms';
@NgModule({
declarations: [
AppComponent,
TestComponent
],
imports: [
BrowserModule,
FormsModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
使用 Angular CLI 建立測試元件,如下所示:
ng generate component test
以上建立了一個新的元件,輸出如下:
CREATE src/app/test/test.component.scss (0 bytes) CREATE src/app/test/test.component.html (19 bytes) CREATE src/app/test/test.component.spec.ts (614 bytes) CREATE src/app/test/test.component.ts (262 bytes) UPDATE src/app/app.module.ts (545 bytes)
讓我們建立一個簡單的表單來顯示使用者輸入的文字。
將以下程式碼新增到test.component.html檔案:
<form #userName="ngForm" (ngSubmit)="onClickSubmit(userName.value)"> <input type="text" name="username" placeholder="username" ngModel> <br/> <br/> <input type="submit" value="submit"> </form>
這裡,我們在input文字欄位中使用了ngModel屬性。
在test.component.ts檔案中建立onClickSubmit()方法,如下所示:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.scss']
})
export class TestComponent implements OnInit {
ngOnInit() {
}
onClickSubmit(result) {
console.log("You have entered : " + result.username);
}
}
開啟 app.component.html 並更改內容如下:
<app-test></app-test>
最後,使用以下命令啟動您的應用程式(如果尚未啟動):
ng serve
現在,執行您的應用程式,您將看到以下響應:
在輸入文字欄位中輸入Peter並提交。將呼叫onClickSubmit函式,並將使用者輸入的文字Peter作為引數傳送。onClickSubmit將在控制檯中列印使用者名稱,輸出如下:
響應式表單
響應式表單是在元件類內部建立的,因此也稱為模型驅動表單。每個表單控制元件在元件中都有一個物件,這提供了更大的控制和靈活性。響應式表單基於結構化資料模型。讓我們瞭解如何在 Angular 中使用響應式表單。
配置響應式表單
要啟用響應式表單,首先需要在app.module.ts中匯入ReactiveFormsModule。定義如下:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { TestComponent } from './test/test.component';
import { FormsModule } from '@angular/forms';
//import ReactiveFormsModule here
import { ReactiveFormsModule } from '@angular/forms';
imports: [
BrowserModule,
AppRoutingModule,
FormsModule,
ReactiveFormsModule //Assign here
]
建立響應式表單
在開始建立響應式表單之前,我們需要了解以下概念:
FormControl: 定義單個表單控制元件的基本功能
FormGroup: 用於聚合集合表單控制元件的值
FormArray: 用於將表單控制元件的值聚合到陣列中
ControlValueAccessor: 充當表單 API 與 HTML DOM 元素之間的介面。
讓我們在 Angular 中建立一個示例應用程式(reactive-form-app)來學習模板驅動表單。
開啟命令提示符並使用以下命令建立新的 Angular 應用程式:
cd /go/to/workspace ng new reactive-form-app cd reactive-form-app
在AppComponent中配置ReactiveFormsModule,如下所示:
...
import { ReactiveFormsModule } from '@angular/forms';
@NgModule({
declarations: [
AppComponent,
TestComponent
],
imports: [
BrowserModule,
ReactiveFormsModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
使用 Angular CLI 建立一個test元件,如下所示:
ng generate component test
以上建立了一個新的元件,輸出如下:
CREATE src/app/test/test.component.scss (0 bytes) CREATE src/app/test/test.component.html (19 bytes) CREATE src/app/test/test.component.spec.ts (614 bytes) CREATE src/app/test/test.component.ts (262 bytes) UPDATE src/app/app.module.ts (545 bytes)
讓我們建立一個簡單的表單來顯示使用者輸入的文字。
我們需要在TestComponent中匯入FormGroup、FormControl類。
import { FormGroup, FormControl } from '@angular/forms';
在test.component.ts檔案中建立onClickSubmit()方法,如下所示:
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.css']
})
export class TestComponent implements OnInit {
userName;
formdata;
ngOnInit() {
this.formdata = new FormGroup({
userName: new FormControl("Tutorialspoint")
});
}
onClickSubmit(data) {this.userName = data.userName;}
}
這裡:
建立了formGroup的例項,並將其設定為區域性變數 form-data。
建立了FormControl的例項,並將其設定為 form-data 中的一個條目。
建立了一個onClickSubmit()方法,該方法使用其引數設定區域性變數userName。
將以下程式碼新增到test.component.html檔案。
<div>
<form [formGroup]="formdata" (ngSubmit)="onClickSubmit(formdata.value)" >
<input type= text" name="userName" placeholder="userName"
formControlName = "userName">
<br/>
<br/>
<input type="submit" value="Click here">
</form>
</div>
<p> Textbox result is: {{userName}} </p>
這裡:
建立新的表單,並將其formGroup屬性設定為 formdata。
建立新的輸入文字欄位,並將formControlName設定為 username。
在表單中使用ngSubmit事件屬性,並將其值設定為 onClickSubmit() 方法。
onClickSubmit()方法獲取 form-data 值作為其引數。
開啟app.component.html並更改內容如下:
<app-test></app-test>
最後,使用以下命令啟動您的應用程式(如果尚未啟動):
ng serve
現在,執行您的應用程式,您將看到以下響應:
在輸入文字欄位中輸入Tutorialspoint並提交。將呼叫onClickSubmit函式,並將使用者輸入的文字Peter作為引數傳送。
我們將在下一章進行表單驗證。