99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Angular4 開發(fā)實戰(zhàn):(9) 創(chuàng)建表單

2018-06-19 11:25 更新
  • NgForm指令為form增補了一些額外特性。 它會控制那些帶有ngModel指令和name屬性的元素,監(jiān)聽他們的屬性(包括其有效性)。 它還有自己的valid屬性,這個屬性只有在它包含的每個控件都有效時才是真。
  • 當使用ngForm方式創(chuàng)建表單時,其內(nèi)部的每個 input 元素都必須有name屬性,Angular 表單用它注冊控件。實質(zhì)上是ngModelname屬性一起創(chuàng)建了一個FormControl。
表單驗證 html5內(nèi)置的數(shù)據(jù)驗證包括Required、minLength、maxLength、pattern ,我們可以將這些標簽應用到我們的輸入控件上。 這些驗證整合起來說就是:表單是合法(valid)的,還是不合法(invalid)的。 我們來修改一下代碼:

// demo-form.component.html   

<div class="box">   

  <form #userForm="ngForm" (ngSubmit)="onSubmit(userForm.form.valid)" novalidate>   

    <div>   

      <label>   

        用戶:<input type="text" name="name" [(ngModel)]="name" required>   

      </label>   

      <p *ngIf="userForm.controls['name']?.invalid" class="error">用戶名必填</p>   

    </div>   

    <div>   

      <label>   

        電話:<input type="text" name="tel" [(ngModel)]="tel" pattern="1[3|5|8]\d{9}" required>   

      </label>   

    </div>   

    <div>   

      <label>   

        性別:   

        <select [(ngModel)]="sex" name="sex" required>   

          <option value="man">男</option>   

          <option value="female">女</option>   

        </select>   

      </label>   

      <p *ngIf="userForm.controls['sex']?.errors?.required"></p>   

    </div>   

    <button type="submit" [disabled]="!userForm.form.valid">發(fā)布</button>   

  </form>  

</div>

在上面的代碼中,我們?yōu)槿齻€表單都增加required必填屬性,同時在提交按鈕上添加disabled屬性,并且值是userForm.form.valid,這表示只有當前form里所有表單元素(input,select等)都合法時,才可以提交,否則禁用按鈕。 還有在input[name='name']底部添加一個驗證提示:

<p *ngIf="userForm.controls['name']?.invalid" class="error">用戶名必填</p>

在前面提過,Angular使用ngModelname屬性構建了一個FormControl,這也是我們可以通過NgForm.controls獲取里面所有具有name屬性的表單,它是一個數(shù)組。 而對于每一個FormControl,它都有以下驗證屬性: errors errors包含了表單所有的驗證內(nèi)容。比如:

form.controls.name.errors.required // 必填項  

form.controls.name.errors.minlength // 最小數(shù)  

form.controls.name.errors.maxlength // 最大數(shù)

當然,除了通過form的模板變量來訪問其內(nèi)的表單元素,我們也可以為其內(nèi)的表單元素定義自己的模板變量。 我們修改一下input[name=sex]

<div>   

  <label> 

     性別:   

     <select [(ngModel)]="sex" name="sex" required #sexInput="ngModel">   

       <option value="man">男</option>   

       <option value="female">女</option>   

     </select>   

  </label>   

  <p *ngIf="sexInput.invalid" class="error">不合法</p>   

  <p *ngIf="sexInput.errors?.required"></p>   

</div>

在上面的代碼中,我們通過#sexInput="ngModel"來獲取到當前input的FormControl。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號