angular 表單

1.簡(jiǎn)單的H5表單

image.png

當(dāng)我們點(diǎn)擊注冊(cè)按鈕的時(shí)候會(huì)對(duì)表單進(jìn)行校驗(yàn)

image.png

2.Angular表單的分類

image.png

兩種表單的不同點(diǎn)

image.png

3.模板式表單 只能使用指令來(lái)定義模型

下面的三個(gè)指令都包含在 FormModule 中

image.png

ngForm 指令自動(dòng)添加到form標(biāo)簽中
ngForm 不僅僅局限于 form標(biāo)簽 ngForm也可以 定義于div元素之下 效果是一樣的
如下圖


image.png

如果你不希望由ngForm來(lái)處理你的標(biāo)簽可以在上面添加一個(gè)指令 如下圖
angular 就不會(huì)接管這個(gè)表單了


image.png

于此同時(shí) 我們可以給這個(gè)表單添加一個(gè) 引用變量 這個(gè)引用變量方便我們?cè)诤竺嬉么薴orm來(lái)使用
image.png

看下面的例子
image.png
image.png

并沒(méi)有出現(xiàn)json樣式的字符串
我們想要解決這個(gè)問(wèn)題 我們需要給 input標(biāo)簽來(lái)綁定相應(yīng)的ngmodel 下圖給 表單添加了 ngmodel 注意 ***************一定要給表單一個(gè)name的屬性 必須要給的
如下圖

image.png
image.png

于此同時(shí) 我們同樣可以給 ngmodel一個(gè)模板變量 方便我們來(lái)引用

image.png

如果我們想要完成 提交功能 就需要我們來(lái)給 form 標(biāo)簽的ngSubmit

image.png

接下來(lái)的一個(gè)指令標(biāo)簽
ngModelGroup

image.png

接下來(lái) 看代碼 下面是一個(gè)組件的模板案例

image.png

下面的是 一個(gè)模板的案例

image.png

結(jié)果 如下圖

image.png

******************************模板表單總結(jié)

image.png

  1. 響應(yīng)式表單
    響應(yīng)式表單涉及的三個(gè)類
image.png

1) FormControl 構(gòu)成表單的基本單位 不僅僅控制 表單的屬性以及數(shù)值 并且還可以表示
angular里面的 日歷 下拉選擇框 里面包含關(guān)聯(lián)的html元素 當(dāng)前的值 校驗(yàn)狀態(tài) 以及是否修改過(guò)的等等信息
2)FormGroup 封裝多個(gè)FormControl 值和狀態(tài) 可以代表多個(gè)表單 在表單校驗(yàn)中如果一個(gè) formControl 不合理時(shí) 整個(gè)的formGroup就不合理 (無(wú)效 )
聲明如下圖

image.png

3)FormArray

image.png

FormArray與 FormGroup的區(qū)別就是 沒(méi)有先關(guān)的key 只能通過(guò)序號(hào)來(lái)訪問(wèn)里面的formControl

響應(yīng)式表單的指令

image.png

上面的指令完全來(lái)自下面的module

image.png

****************響應(yīng)式表單需要注意的地方 ::
1.響應(yīng)式表單好多的指令都是以form開(kāi)頭的
2.響應(yīng)式表單不可以聲明引用性變量
3.一個(gè)可以在模板中操作(模板式表單) 另一個(gè)是僅僅能在代碼中操作(響應(yīng)式表單)
響應(yīng)式表單的使用方法
組件如下
image.png

image.png

模板如下

image.png

單獨(dú)添加了一個(gè)formControl之后的效果

image.png
image.png

用響應(yīng)式表單的方法來(lái)重構(gòu)
組件中

image.png
image.png

模板中

image.png

效果如下

image.png

接下來(lái) 我們使用 formbuilder 來(lái)構(gòu)建 formGroup和 formcontrol formbuilder 還可以為我們快速的構(gòu)建校驗(yàn)器
下面這段代碼就能夠完全代替上面的代碼


image.png

校驗(yàn)器
自定義的校驗(yàn)器如下


image.png

此外 angular提供了一組預(yù)定義的校驗(yàn)器
Validators這個(gè)類里面的 required minlength maxlength 和 parten
下面看如何使用這些預(yù)定好的校驗(yàn)器

image.png

如下我們自定義了一個(gè)手機(jī)號(hào)校驗(yàn)的方法

image.png

上面的手機(jī)校驗(yàn)是單個(gè)form的校驗(yàn) 有的時(shí)候我們需要校驗(yàn)多個(gè)字段angular 提供給我們
同時(shí)校驗(yàn)多個(gè)表單的的校驗(yàn)方法

下面的方法就是校驗(yàn)兩個(gè)表單的例子 驗(yàn)證密碼和確認(rèn)密碼兩次的輸入數(shù)據(jù)是否相同

image.png

并添加到下面的聲明中

image.png

上面的表單的校驗(yàn)器不一定需要我們一定要寫(xiě)在組件的校驗(yàn)器中 有的時(shí)候 需要我們將校驗(yàn)器放在一個(gè)特定的類中 糊治,并使用 export 將其暴露出來(lái) 使其可以在多個(gè)表單中進(jìn)行校驗(yàn)

例子如下 下面是我們將驗(yàn)證的方法寫(xiě)在外部的函數(shù)中

image.png

我們?cè)诮M件中進(jìn)行相應(yīng)的引用

image.png

以后我們可以在組件中復(fù)用這些功能相同的校驗(yàn)器了
通過(guò)下面的驗(yàn)證 只有當(dāng)判斷語(yǔ)句全部滿足的時(shí)候 才向后臺(tái)發(fā)出請(qǐng)求或者提交數(shù)據(jù)等等

image.png

上面完成了 校驗(yàn)器的邏輯與功能


我們通常在校驗(yàn)完 數(shù)據(jù)的正確性之后 都會(huì) 返回錯(cuò)誤的提示信息給用戶 制轰。
下面的例子就是通過(guò) div的 hidden屬性 用來(lái)顯示錯(cuò)誤的提示信息是否展現(xiàn)給用戶

image.png
image.png
image.png
image.png

如果我們要驗(yàn)證的信息是嵌套在一個(gè)formGroup中的時(shí)候 我們需要使用下面的方式來(lái)驗(yàn)證

image.png

上面的錯(cuò)誤信息也可以在校驗(yàn)器中進(jìn)行聲明 沒(méi)有必要寫(xiě)在模板上面 請(qǐng)看下面的實(shí)現(xiàn)方法

image.png
image.png

下面我們來(lái)講一下異步校驗(yàn)器
異步校驗(yàn)器的返回值不是任意對(duì)象的 返回的是一個(gè)可以觀測(cè)的流

image.png
image.png
image.png

狀態(tài)字段

image.png

第一組字段判斷的是 否獲取過(guò)焦點(diǎn) 如果獲取過(guò)焦點(diǎn) touched =true untouched =false
反之 沒(méi)有獲取過(guò)焦點(diǎn) touched=false untouched=true
看一下下面的例子 只有當(dāng)username是驗(yàn)證有效的或者沒(méi)有獲取焦點(diǎn)的時(shí)候 將錯(cuò)誤的提示信息展現(xiàn)出來(lái)


image.png

第二組字段
如果一個(gè)字段的值從未改變過(guò) pristine 為true dirty為false
反之一個(gè)字段的值 改變過(guò) pristine 為false dirty為true

image.png

第三組字段
當(dāng)我們正在處理異步校驗(yàn)的時(shí)候 我們將 pending的值 設(shè)置為true

image.png

我們也可以根據(jù) 表單的不同狀態(tài)給他添加不同的樣式

image.png
image.png
image.png


上面講述了如何校驗(yàn)響應(yīng)式的表單 現(xiàn)在我們要校驗(yàn) 模板式表單

1.首先 我們先生成一個(gè)指令

image.png
image.png

指令就是一個(gè)沒(méi)有模板的組件 指令可以作為html的屬性來(lái)使用
如下 我們可以在組件模板里面使用


image.png

我們現(xiàn)在要做的就是將我們之前定義的 校驗(yàn)器 包裝到 指令中去

image.png
image.png
image.png

我們也可以使用系統(tǒng)提供的默認(rèn)的校驗(yàn)器 required maxlength minlength patern

image.png

下面是整個(gè)的模板的校驗(yàn)代碼

image.png

假如我們想了解 一下表單的正確性 只能在模板中 我們將 表單的數(shù)據(jù)傳遞到模板中去

image.png
image.png

下面 我們需要將錯(cuò)誤的信息返還給用戶

image.png
image.png
image.png
image.png

也可以完成和 響應(yīng)式表單一樣的功能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末讲竿,一起剝皮案震驚了整個(gè)濱河市围橡,隨后出現(xiàn)的幾起案子性穿,更是在濱河造成了極大的恐慌,老刑警劉巖澡谭,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件争涌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡音五,警方通過(guò)查閱死者的電腦和手機(jī)惫撰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)躺涝,“玉大人厨钻,你說(shuō)我怎么就攤上這事。” “怎么了莉撇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵呢蛤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我棍郎,道長(zhǎng)其障,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任涂佃,我火速辦了婚禮励翼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辜荠。我一直安慰自己汽抚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布伯病。 她就那樣靜靜地躺著造烁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪午笛。 梳的紋絲不亂的頭發(fā)上惭蟋,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音药磺,去河邊找鬼告组。 笑死,一個(gè)胖子當(dāng)著我的面吹牛癌佩,可吹牛的內(nèi)容都是我干的木缝。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼围辙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼我碟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起姚建,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤怎囚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后桥胞,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡考婴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年贩虾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沥阱。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缎罢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情策精,我是刑警寧澤舰始,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站咽袜,受9級(jí)特大地震影響丸卷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜询刹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一谜嫉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凹联,春花似錦沐兰、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至澳淑,卻和暖如春比原,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背偶惠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工春寿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忽孽。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓绑改,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親兄一。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厘线,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Angular 支持非常強(qiáng)大的內(nèi)置表單驗(yàn)證,maxlength出革、minlength造壮、required 以及 pat...
    sunny_lvy閱讀 19,912評(píng)論 3 25
  • 版本:Angular 5.0.0-alpha 表單是商業(yè)應(yīng)用的支柱,我們用它來(lái)執(zhí)行登錄骂束、求助耳璧、下單、預(yù)訂機(jī)票展箱、安排...
    soojade閱讀 1,268評(píng)論 0 1
  • 常用的表單驗(yàn)證指令: 1.必填的表單驗(yàn)證指令: 某個(gè)表單輸入是否已填寫(xiě)旨枯,只要在輸入字段元素上添加HTML5標(biāo)記re...
    love2013閱讀 260評(píng)論 0 1
  • 你相信命運(yùn)嗎?相信冥冥之中自有安排嗎混驰?有時(shí)候我是相信的攀隔。改變不了皂贩,也無(wú)法改變,只能去承受昆汹。但也許一切都是有因果循環(huán)...
    橙黃桔綠_1857閱讀 153評(píng)論 0 0
  • 大家晚上好呀明刷,歡迎和我一起PPT每日一學(xué)一操作。我們先回顧一下昨天的學(xué)習(xí)內(nèi)容吧满粗!PPT學(xué)習(xí)04_如何簡(jiǎn)單處理放大后...
    徐胥閱讀 763評(píng)論 0 4