要使用模板驅動型表單,我們必須先導入formsmodule
模組。
@ngmodule()
template.component.html
}
template.component.ts
import from '@angular/core';
@component()
export class templatecomponent
onsubmit(value)
}
幾點說明:
angular2
會自動為表單新增ngform
指令,我們不需要再單獨寫幾點說明:
angular2
內建了一些常見的驗證器,required
(必填),maxlength
(最大長度),minlength
(最小長度),max
(最大值),min
(最小值),pattern
(正規表示式)...等等,我們可以直接使用它。
我們可以通過模板引用變數#name="ngmodel"
引用ngmodel
指令,來獲該元素的驗證資訊,從而做相應的驗證提示。
*ngif="name.invalid && (name.dirty || name.touched || form.submitted)"
,這裡表示當name
為臟值或者已經被訪問過或者表單已經提交了,name
值仍然無效時,顯示錯誤資訊,詳細的狀態說明可參考通過 ngmodel 跟蹤修改狀態與有效性驗證。
當元素驗證失敗時,我們可以通過errors
屬性獲取具體是那一項驗證沒有通過,如:*ngif="name.errors.required"
,表示如果errors
上存在required
屬性,表明使用者沒有輸入。
假設我們需要乙個可以指定驗證規則的密碼驗證器。
password.validator.ts
import from '@angular/forms';
import from '@angular/core'
@directive(]
})export class passwroddirective implements validator}}
return error;
}}
在模板中使用
password is illegal!
幾點說明:
驗證器的本質就是乙個屬性型指令。
angular2
內建的驗證器都是繫結在ng_validators
上的,我們可以通過設定providers
屬性對其進行擴充套件。
我們通過@input()
給指令新增了乙個輸入引數,這樣我們可以指定驗證規則了。
該指令的類實現了validator
介面,需要實現validate
這個方法。validate
方法接收乙個abstractcontrol
型別的引數control
,我們可以通過control.value
獲取到需要校驗的值。validate
方法返回null
表示驗證成功,返回物件(這個例子中是:)表示驗證失敗,返回的錯誤物件的屬性會被新增到
errors
物件中。
假設我們需要乙個可以驗證使用者名稱是否重複的驗證器。
name.validator.ts
import from '@angular/forms';
import from '@angular/core';
const userlist = [
'jack',
'mary',
'jimi',
'tom'
];@directive(]
})export class checknamedirective implements asyncvalidator);
} else
}, 2000)
});}
}
在模板中使用
name can not be empty!
this name is exist!
幾點說明:
非同步驗證器的本質也是乙個屬性型指令。
我們可以通過設定providers:
對ng_async_validators
進行擴充套件。
該指令的類實現了asyncvalidator
介面,需要實現validate
這個方法。validate
方法接收乙個abstractcontrol
型別的引數control
,我們可以通過control.value
獲取到需要校驗的值。與同步驗證器不同的是,非同步驗證器的validate
方法返回乙個promise
物件,當延時操作執行完以後,resolve(null)
表示驗證成功,resolve()
表示驗證失敗,resolve
傳遞的資料會被附加到errors
物件中。
當所有的同步驗證器驗證通過後,才會開始非同步驗證。
Angular2表單驗證
angular2中使用表單,首先要在from上新增 forma ngform 這個是給from定義成了angular的from物件 form horizontal forma ngform ngsubmit onsubmit showmodal 下面的label中的for對應著input中的id值,...
Angular 2 之五 表單
標註方式定義表單步驟如下 建立表單輸入的資料模型 建立元件用於表單輸入 建立元件模板用於表單布局 使用ngmodel將資料模型字段雙向繫結到對應的輸入控制項 輸入控制項增加ngcontrol屬性 增加css視覺效果 顯示或隱藏輸入錯誤提示資訊 表單資料驗證正確之前禁用提交按鈕 通過ngsubmit處...
angular2 發布angular2模組,服務
上回說到了如何利用npm包管理器發布自己的包,這次咱們就來個實踐。1 寫好自己的元件 2 利用npm發布自己的元件 3 使用包 基於angular2的架構,一般都需要下列檔案 html檔案,css檔案,component檔案,module檔案。component檔案內容 import區域 impor...