国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

angular4 學(xué)習(xí)記錄 -- 表單

james / 2887人閱讀

摘要:在表單上添加的會(huì)攔截標(biāo)準(zhǔn)的表單提交事件。并為它們提供了一些共同的行為和屬性,其中有些是可觀察對(duì)象。用于跟蹤一個(gè)多帶帶的表單控件的值和有效性狀態(tài)。組件中的頂級(jí)表單就是一個(gè)。在表單所在的中的上添加,再在指定的驗(yàn)證方法中調(diào)用來(lái)顯示驗(yàn)證失敗信息。

angular4 表單 模板表單

在app.module中導(dǎo)入FormsModule之后,項(xiàng)目中的form表單都會(huì)是一個(gè)ngForm,也就是一個(gè)模板表單。

import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { FormsModule } from "@angular/forms";

@NgModule({
  imports: [
    CommonModule,
    FormsModule
  ],
  exports: [],
  declarations: []
})
export class AppModule { }

在表單上添加的ngForm會(huì)攔截標(biāo)準(zhǔn)的hmlt表單提交事件

ngModel和FormControl

在表單元素中添加了ngmodel屬性,這代表著創(chuàng)建了一個(gè)FormControl控件。

將第一步中的控件放至form中,Form會(huì)自動(dòng)將該FormControl控件注冊(cè)為Form的子控件。只有表單元素上在添加了ngModel的基礎(chǔ)上再添加name屬性,才會(huì)將name=“nickname”的字段添加至表單控件上。
例:

    
{{myForm.value | json}} //這里將以{{"nickname": xxx}}輸出input輸入框中的內(nèi)容

單向數(shù)據(jù)綁定

具體使用`[ngModel]="xxx"`

雙向數(shù)據(jù)綁定

具體使用`[(ngModel)]="xxx"`

ngModelGroup

簡(jiǎn)單來(lái)說(shuō),是一組 FormControl

響應(yīng)式表單 響應(yīng)式表單中一些常用的類(lèi)

AbstractControl是三個(gè)具體表單類(lèi)的抽象基類(lèi)。 并為它們提供了一些共同的行為和屬性,其中有些是可觀察對(duì)象(Observable)。

FormControl 用于跟蹤一個(gè)多帶帶的表單控件的值和有效性狀態(tài)。它對(duì)應(yīng)于一個(gè)HTML表單控件,比如輸入框和下拉框。

FormGroup用于 跟蹤一組AbstractControl的實(shí)例的值和有效性狀態(tài)。 該組的屬性中包含了它的子控件。 組件中的頂級(jí)表單就是一個(gè)FormGroup。

FormArray用于跟蹤AbstractControl實(shí)例組成的有序數(shù)組的值和有效性狀態(tài)。

具體使用

在使用響應(yīng)式表單之前,也需要在app.module中添加import。

import {ReactiveFormsModule} from "@angular/forms";
@NgModule({
  // 省略其他
    imports: [..., ReactiveFormsModule],
  // 省略其他
})
// 省略其他
區(qū)別:響應(yīng)式表單與模板表單最大的區(qū)別在于響應(yīng)式表單并不是直接地將form中的value直接綁定在html中的標(biāo)簽上,而是只是簡(jiǎn)單地聲明了一下formControlName,再在component上將對(duì)應(yīng)的formControlName的表單元素實(shí)例化FormControl
ngOnInit() {
    // 初始化表單
    this.user = new FormGroup({
      email: new FormControl("", [Validators.required, Validators.pattern(/([a-zA-Z0-9]+[_|_|.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|_|.]?)*[a-zA-Z0-9]+.[a-zA-Z]{2,4}/)]),
      password: new FormControl("", [Validators.required]),
      repeat: new FormControl("", [Validators.required]),
      address: new FormGroup({
        province: new FormControl(""),
        city: new FormControl(""),
        area: new FormControl(""),
        addr: new FormControl("")
      })
    });
}
FomBuilder

FormBuilder的存在就是為了能夠快速構(gòu)建表單。具體使用形式:

constructor(private fb: FormBuilder) {}

ngOnInit() {
    // 初始化表單
    this.user = this.fb.group({
      email: ["", [Validators.required, Validators.email]],
      password: ["", Validators.required],
      repeat: ["", Validators.required],
      address: this.fb.group({
        province: [],
        city: [],
        area: [],
        addr: []
      })
    });
}
表單驗(yàn)證

目前Angular支持的內(nèi)置validate屬性:

required - 設(shè)置表單控件值是非空的

email - 設(shè)置表單控件的格式是email

minlength - 設(shè)置表單控件值的最小長(zhǎng)度

maxlength - 設(shè)置表單控件長(zhǎng)度的最大值

pattern - 設(shè)置表單控件的值需匹配 pattern 對(duì)應(yīng)的模式

如何判斷驗(yàn)證的結(jié)果

通過(guò)表單控件的.valid判斷驗(yàn)證結(jié)果,其結(jié)果狀態(tài):

valid - 有效

invalid - 無(wú)效

pristine - 表單值未改變

dirty - 表單值已改變

touched - 表單控件已被訪問(wèn)過(guò)

untouched - 表單控件未被訪問(wèn)過(guò)

如果顯示驗(yàn)證失敗的信息

可以直接在html中編寫(xiě)驗(yàn)證信息,通過(guò)設(shè)置[hidden]="!formModel.hasError("驗(yàn)證結(jié)果")"屬性來(lái)顯示。

在表單所在的component中的fomModel上添加{validator: xxxValidat0or},再在指定的xxxValidator驗(yàn)證方法中調(diào)用description來(lái)顯示驗(yàn)證失敗信息。
例:{password: {description: "密碼和確認(rèn)密碼不匹配"}}

如何添加驗(yàn)證信息的樣式

可以通過(guò)以下類(lèi)選擇器添加相應(yīng)的樣式:

.ng-valid

.ng-invalid

.ng-pristine

.ng-dirty

.touched

.untouched

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/88688.html

相關(guān)文章

  • 前端框架這么多,該如何抉擇?

    摘要:在引起狀態(tài)變化的時(shí)刻,框架自動(dòng)觸發(fā)臟檢查,也可以手動(dòng)執(zhí)行臟檢查,直接操作更新視圖。最后,說(shuō)了這么多,大家在具體選型時(shí)還是要首先分析自己的需求和現(xiàn)狀,然后再做選擇。 作為一個(gè)軟件開(kāi)發(fā)者,最大的挑戰(zhàn)就是在不斷涌現(xiàn)的新技術(shù)中進(jìn)行取舍,持續(xù)學(xué)習(xí)是從事這一行業(yè)的必備技能。在這個(gè)領(lǐng)域里,技術(shù)更新最快地又非前端莫屬了。各種框架的出現(xiàn)、版本的更新此起彼伏,呈現(xiàn)出一派欣欣向榮之景。 在項(xiàng)目中必不可少的便...

    Jackwoo 評(píng)論0 收藏0
  • 前端框架這么多,該如何抉擇?

    摘要:在引起狀態(tài)變化的時(shí)刻,框架自動(dòng)觸發(fā)臟檢查,也可以手動(dòng)執(zhí)行臟檢查,直接操作更新視圖。最后,說(shuō)了這么多,大家在具體選型時(shí)還是要首先分析自己的需求和現(xiàn)狀,然后再做選擇。 作為一個(gè)軟件開(kāi)發(fā)者,最大的挑戰(zhàn)就是在不斷涌現(xiàn)的新技術(shù)中進(jìn)行取舍,持續(xù)學(xué)習(xí)是從事這一行業(yè)的必備技能。在這個(gè)領(lǐng)域里,技術(shù)更新最快地又非前端莫屬了。各種框架的出現(xiàn)、版本的更新此起彼伏,呈現(xiàn)出一派欣欣向榮之景。 在項(xiàng)目中必不可少的便...

    lemon 評(píng)論0 收藏0
  • 前端框架這么多,該如何抉擇?

    摘要:在引起狀態(tài)變化的時(shí)刻,框架自動(dòng)觸發(fā)臟檢查,也可以手動(dòng)執(zhí)行臟檢查,直接操作更新視圖。最后,說(shuō)了這么多,大家在具體選型時(shí)還是要首先分析自己的需求和現(xiàn)狀,然后再做選擇。 作為一個(gè)軟件開(kāi)發(fā)者,最大的挑戰(zhàn)就是在不斷涌現(xiàn)的新技術(shù)中進(jìn)行取舍,持續(xù)學(xué)習(xí)是從事這一行業(yè)的必備技能。在這個(gè)領(lǐng)域里,技術(shù)更新最快地又非前端莫屬了。各種框架的出現(xiàn)、版本的更新此起彼伏,呈現(xiàn)出一派欣欣向榮之景。 在項(xiàng)目中必不可少的便...

    alphahans 評(píng)論0 收藏0
  • 利用angular4和nodejs-express構(gòu)建一個(gè)簡(jiǎn)單的網(wǎng)站(九)—用戶(hù)登錄

    摘要:好了,廢話少說(shuō),繼續(xù)吧這一章主要講利用控制用戶(hù)登錄。在前面的用戶(hù)注冊(cè)表單中使用了的響應(yīng)式表單。在構(gòu)造函數(shù)中聲明了一個(gè)對(duì)象一個(gè)對(duì)象和對(duì)象對(duì)象。并在構(gòu)造函數(shù)中用的方法更新了網(wǎng)頁(yè)的標(biāo)題。接下來(lái)導(dǎo)航到下一個(gè)頁(yè)面,并提示用戶(hù)登錄成功。 最近工作比較忙,一直沒(méi)有更新文章。原來(lái)看別人的文章感覺(jué)很過(guò)癮,現(xiàn)在自己寫(xiě)才發(fā)現(xiàn),要堅(jiān)持下去真的很難。好了,廢話少說(shuō),繼續(xù)吧!這一章主要講利用angularJs控制...

    Snailclimb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<