亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

angular4中關于表單的校驗示例

2019-11-19 15:09:59
字體:
來源:轉載
供稿:網友

本章中介紹響應式表單的創建及表單輸入值的校驗,對于模板表單就略過。

一、使用響應式表單的步驟

1、在模塊(一般是app.module.ts)中引入ReactiveFormsModule
2、在組件的ts文件中使用響應式表單

import { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';export class ReactiveFormComponent implements OnInit {  private myForm: FormGroup;  constructor(private fb: FormBuilder) {    this.createForm();  }  ngOnInit() {  }  // 創建表單元素  createForm() {    this.myForm = this.fb.group({      username: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(6)]],      mobile: ['', [Validators.required]],      password: this.fb.group({        pass1: [''],        pass2: ['']      })    });  }  // 提交表單函數  postDate() {    /**     * valid:是否有效     * invalid:無效     * dirty:臟     * status:狀態     * errors:顯示錯誤     */    if(this.myForm.valid){      console.log(this.myForm.value);    }  }}

3、在組件的html頁面中使用

<form [formGroup]="myForm" (ngSubmit)="postDate()">  <div class="form-group">    <label for="username">用戶名:</label>    <input type="text" placeholder="請輸入用戶名" class="form-control" id="username" formControlName="username" />  </div>  <div class="form-group">    <label for="mobile">手機號碼:</label>    <input type="text" placeholder="請輸入手機號碼" class="form-control" id="mobile" formControlName="mobile"/>  </div>  <div formGroupName="password" style="border:none;">    <div class="form-group">      <label>密碼:</label>      <input type="password" class="form-control" placeholder="請輸入密碼" formControlName="pass1" />    </div>    <div class="form-group">      <label>確認密碼:</label>      <input type="password" class="form-control" placeholder="請再次輸入密碼" formControlName="pass2" />    </div>  </div>  <div class="form-group">    <input type="submit" value="提交" class="btn btn-warning" [disabled]="!myForm.valid" />  </div></form>

二、使用表單校驗數據

1、angular中自帶了三個常見的表單校驗的是在Validators中的required,minLength,maxLength
2、自定義表單校驗器(其實就一個函數,函數的參數是當前需要校驗的行,返回一個任意對象)

**格式**export function fnName(control:FormControl|FormGroup):any{}

3、響應式表單字段中可以寫三個值,第一個是返顯到頁面上的,第二個參數是校驗器(可以是一組),第三個參數異步校驗(常見判斷手機號碼,用戶名是否重復注冊)

三、自定義一個校驗方法的步驟

1、把項目中需要用的校驗器單獨寫一個文件

import { FormControl, FormGroup } from '@angular/forms';/** * 自定義驗證器(其實就是一個函數,一個返回任意對象的函數) * 傳遞的參數是當前需要驗證的表單的FormControl * 通過傳遞的參數獲取當前表單輸入的值 */export function mobileValidator(control: FormControl): any {  console.dir(control);  // 獲取到輸入框的值  const val = control.value;  // 手機號碼正則  const mobieReg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+/d{8})$/;  const result = mobieReg.test(val);  return result ? null : { mobile: { info: '手機號碼格式不正確' } };}

2、使用自己定義的校驗器

createForm() {  this.myForm = this.fb.group({    username: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(6)]],    mobile: ['', [Validators.required, mobileValidator]],    password: this.fb.group({      pass1: [''],      pass2: ['']    })  });}

3、定義一個密碼組的校驗

// 定義一個密碼組的驗證方法export function passValidator(controlGroup: FormGroup): any {  // 獲取密碼輸入框的值  const pass1 = controlGroup.get('pass1').value as FormControl;  const pass2 = controlGroup.get('pass2').value as FormControl;  console.log('你輸入的值:', pass1, pass2);  const isEqule: boolean = (pass1 === pass2);  return isEqule ? null : { passValidator: { info: '兩次密碼不一致' } };} 

4、使用

createForm() {  this.myForm = this.fb.group({    username: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(6)]],    mobile: ['', [Validators.required, mobileValidator]],    password: this.fb.group({      pass1: [''],      pass2: ['']    }, {validator: passValidator})  });}

四、關于前端頁面中錯誤的顯示

1、頁面顯示錯誤

<div class="form-group">  <label for="username">用戶名:</label>  <input type="text" placeholder="請輸入用戶名" class="form-control" id="username" formControlName="username" />  <!-- 當輸入框沒有訪問的時候或者合法的時候不顯示 -->  <div [hidden]="myForm.get('username').valid || myForm.get('username').untouched">    <p [hidden]="!myForm.hasError('required','username')">用戶名必填的</p>    <p [hidden]="!myForm.hasError('minlength','username')">用戶名長度過短</p>    <p [hidden]="!myForm.hasError('maxlength','username')">用戶名長度太長</p>  </div></div><div class="form-group">  <label for="mobile">手機號碼:</label>  <input type="text" placeholder="請輸入手機號碼" class="form-control" id="mobile" formControlName="mobile"/>  <div [hidden]="myForm.get('mobile').valid || myForm.get('mobile').untouched">    <p [hidden]="!myForm.hasError('mobile', 'mobile')">{{myForm.getError('mobile', 'mobile')?.info}}</p>  </div></div><div formGroupName="password" style="border:none;">  <div class="form-group">    <label>密碼:</label>    <input type="password" class="form-control" placeholder="請輸入密碼" formControlName="pass1" />  </div>  <div class="form-group">    <label>確認密碼:</label>    <input type="password" class="form-control" placeholder="請再次輸入密碼" formControlName="pass2" />  </div>  <!-- 對于group可以不在外面加一層判斷 -->  <div>    <p [hidden]="!myForm.hasError('passValidator','password')">      {{myForm.getError('passValidator','password')?.info}}    </p>  </div></div>

2、定義樣式文件

.ng-touched:not(form),.ng-invalid:not(form) {  border: 1px solid #f00;}.ng-valid:not(form),.ng-untouched:not(form) {  border: 1px solid #ddd;}p{  color:#f00;}

五、自定義class顯示錯誤

1、在input輸入框上寫上

表示該字段無效且觸碰過就添加這個class=”error”

 [class.error]="myForm.get('username').invalid && myForm.get('username').touched"

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女视频网站| 一区二区中文字幕| 亚洲精品久久久久| 欧美最猛性xxxxx亚洲精品| 91美女福利视频高清| 亚洲免费视频观看| 色yeye香蕉凹凸一区二区av| 国产在线久久久| 国产成人av网址| 国产一区二区三区网站| 国产成人一区二区三区电影| 欧美另类极品videosbestfree| 一夜七次郎国产精品亚洲| 91视频免费网站| 欧美在线视频网| 欧美精品久久一区二区| 一区二区欧美激情| 亚洲欧美制服丝袜| 欧美精品激情在线观看| 日韩在线不卡视频| 欧美激情国产高清| 亚洲а∨天堂久久精品喷水| 久久99久久亚洲国产| 一区二区三区在线播放欧美| 亚洲网站在线看| 91在线网站视频| 国产精品爽黄69天堂a| 日韩欧美国产成人| 成人在线国产精品| 久久精品视频在线观看| 久久久久久亚洲精品不卡| 亚洲人成电影网站色xx| 97免费中文视频在线观看| 久久久女人电视剧免费播放下载| 国产精品亚洲自拍| 日韩av最新在线观看| 色青青草原桃花久久综合| 911国产网站尤物在线观看| 在线观看免费高清视频97| 欧美国产第一页| 欧美电影电视剧在线观看| 久久精品视频播放| 91av在线国产| 久久久久久噜噜噜久久久精品| 亚洲日韩欧美视频一区| 中文字幕欧美日韩va免费视频| 在线观看亚洲区| 欧美激情精品久久久久久| 免费av在线一区| 日韩性生活视频| 亚洲大胆人体在线| 69av视频在线播放| 国产精品www色诱视频| 中文字幕在线看视频国产欧美在线看完整| 狠狠色狠狠色综合日日小说| 亚洲一区二区精品| 亚洲欧洲自拍偷拍| 欧美激情视频播放| 久久国产精品久久久久久| 亚洲天堂第一页| 国产精品久久久久久亚洲调教| 91久久夜色精品国产网站| 日韩免费在线观看视频| 欧美俄罗斯乱妇| 这里只有精品视频在线| 日韩中文第一页| 国产97在线|亚洲| 久久免费国产视频| 亚洲国产精品资源| 成人精品视频99在线观看免费| 欧美精品成人91久久久久久久| 亚洲色图综合网| 欧美成人剧情片在线观看| 日韩在线中文字| 欧美一级电影久久| 国产精品99导航| 国产精品视频免费在线观看| 国产精品免费一区豆花| 96sao精品视频在线观看| 91精品国产高清久久久久久91| 久操成人在线视频| 欧美激情2020午夜免费观看| 欧美成人性色生活仑片| 国产不卡av在线| 精品网站999www| 国产精品wwww| 欧美日韩精品在线观看| 国产精品专区一| 欧美高跟鞋交xxxxhd| 国产福利精品在线| 69国产精品成人在线播放| 精品成人69xx.xyz| 国产一区二区三区日韩欧美| 欧美日韩福利在线观看| 国产精品久久久久免费a∨大胸| 亚洲欧美日本精品| 亚洲第一天堂av| 日本精品视频在线播放| 欧美激情综合亚洲一二区| 久久这里有精品视频| 亚洲乱码国产乱码精品精| 久久久久久国产精品美女| 亚洲免费伊人电影在线观看av| 久久久国产精品亚洲一区| 91视频九色网站| 日韩av最新在线| 日韩欧美国产一区二区| 亚洲精品免费在线视频| 欧美精品videosex牲欧美| 久久久久久999| 亚洲性生活视频| 福利视频一区二区| 久久久久久中文| 在线亚洲午夜片av大片| 亚洲成人精品在线| 成人午夜小视频| 欧美最顶级的aⅴ艳星| 欧美成人第一页| 97视频在线观看播放| 国产精品一区二区在线| 久久久亚洲国产天美传媒修理工| 国内外成人免费激情在线视频网站| 成人a在线视频| www.久久草.com| 国产不卡视频在线| 亚洲美女福利视频网站| 久久久久久网站| 国产99久久久欧美黑人| xxx一区二区| 日韩经典中文字幕在线观看| 欧美丰满老妇厨房牲生活| 亚洲色图第一页| 久久久久久国产精品美女| 97国产suv精品一区二区62| 91精品久久久久久久久久| 亚洲免费视频观看| 日韩精品欧美国产精品忘忧草| 两个人的视频www国产精品| 午夜精品视频在线| 日韩中文字幕网站| 中文字幕久久久av一区| 亚洲综合第一页| 欧美另类99xxxxx| 亚洲片在线观看| 高清欧美电影在线| 国产精品视频大全| 亚洲国产精彩中文乱码av| 欧美一级淫片aaaaaaa视频| 久久91亚洲精品中文字幕| 国产欧美va欧美va香蕉在线| 国产精品成人播放| 一区二区欧美久久| 日韩亚洲欧美中文高清在线| 亚洲xxxx在线| 92看片淫黄大片看国产片| 久久黄色av网站| 国产精品久久久999| 精品亚洲一区二区三区在线观看| 国产欧美精品在线| 国产精品啪视频| 92版电视剧仙鹤神针在线观看| 亚洲第一福利网| 日韩av在线影院| 国产国产精品人在线视|