最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Angular8基礎應用之表單及其驗證

 更新時間:2019年08月11日 09:48:24   作者:娜一抹驚鴻  
這篇文章主要給大家介紹了關于Angular8基礎應用之表單及其驗證的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Angular8具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

一、前提

  • 必要性:特別必要
  • 意義:很有意義

二、正文

(一)、新建表單(模板表單)

1、新建名稱為formValidator的ng項目——命令行輸入ng new formValidator;

2、修改pakage.json文件——添加參數(shù),方便開發(fā),命令行輸入npm start啟動項目;

"scripts": {
 "ng": "ng",
 "start": "ng serve --open --port 4210",//修改端口號&自動打開默認瀏覽器窗口
 "build": "ng build",
 "test": "ng test",
 "lint": "ng lint",
 "e2e": "ng e2e"
 },

3、新建組件,命令行輸入ng g c templateForm --spec false;

4、將app.components.html中的內容,替換成<app-template-form></app-template-form>

5、在app.module.ts中引入FormModul并在import中使用;

6、書寫formValidator組件

 //template-form.html
 <div class="container">
  <form (ngSubmit)="save()" #myForm="ngForm">
  <input 
   type="text" 
   [(ngModel)]="name" //雙向數(shù)據(jù)綁定
   name="name" //使用form時必須定義,可以理解為當前控件的名字
   #myName="ngModel" //檢查當前控件狀態(tài)的出口,應用:myName.valid、myName.errors等
   autocomplete="off" //關閉瀏覽器自帶的顯示歷史記錄 h5新屬性
   [appVerifyName]="nameList" //添加驗證器
  >
  <!--invalid是否驗證成功-->
  <!--dirty是否改變-->
  <!--touched是否被撫摸過-->
  <div *ngIf="myName.invalid && (myName.dirty || myName.touched)">
   <div *ngIf="myName.errors.required">
    名稱為必填項
   </div>
   <div *ngIf="myName.errors.repeat">
    名稱重復
   </div> 
  </div>
  <button type="submit" [disabled]="!myForm.form.valid">提交</button> //驗證通過才能提交 
  </form>
 </div>
  //template-form.ts
  ...
  
  name: string;
  
  nameAry:string[] = ['zhangsan','lisi','wangwu'];
  
  constructor() { }

  ngOnInit() {}
  
  save(): void{
    console.log('save 發(fā)請求')
  }
  ...

(二)、驗證表單

1、新建指令,用于驗證ng g c d share/verifyName

2、在share目錄下新建nameValidator.ts,用于書寫驗證函數(shù)

  //share/nameValidator.ts
  
  import { ValidatorFn, AbstractControl } from "@angular/forms";

  export function nameValidator(nameList: string[]): ValidatorFn {
    return (control: AbstractControl): { [key: string]: any } | null => {
      //依據(jù)指令中傳遞進來的名稱列表進行判斷,如果包含,就返回一個對象,對象的key將
      //作為模板(template-form.html)中被驗證的控件的erros的key,如果不包含返回null
      //表示驗證通過
      return nameList.includes(control.value) ? { 'repeat': { value: control.value } } : null;
    };
  }

3、書寫指令——驗證名稱不能重復

  //verify-name.directive.ts
  
  import { Directive, Input } from '@angular/core';
  import { Validator, NG_VALIDATORS, AbstractControl } from '@angular/forms';
  import { nameValidator } from './nameValidator';
  
  @Directive({
   selector: '[appVerifyName]',
   providers: [{
    provide: NG_VALIDATORS,
    useExisting: VerifyNameDirective,
    multi: true
   }]
  })
  export class VerifyNameDirective implements Validator { //實現(xiàn)Validator接口
  
   @Input('appVerifyName') //接收驗證規(guī)則(reg),或者你希望傳到指令中的什么
   nameList: string[];
  
   validate(control: AbstractControl): { [key: string]: any } | null {
    return this.name ? nameValidator(nameList)(control) : null
   }
  }

三、碎碎念

如果只有一個表單或者項目比較小巧,用這樣的驗證機制,我認為是不太明智的(用ng都沒必要),隨便弄個計數(shù)器或者標識位就能達到dirty和touched的效果,反之,大概率上沒有一個項目有一萬個表單控件,定義9000個驗證規(guī)則的,所以可以高度復用,而且維護起來也靈活一些

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • 詳解AngularJS中ng-src指令的使用

    詳解AngularJS中ng-src指令的使用

    這篇文章給大家詳細介紹了AngularJS中ng-src指令的使用,對大家學習AngularJS具有一定參考價值,有需要的朋友們可以參考借鑒。
    2016-09-09
  • AngularJS入門心得之directive和controller通信過程

    AngularJS入門心得之directive和controller通信過程

    Angular JS (Angular.JS) 是一組用來開發(fā)Web頁面的框架、模板以及數(shù)據(jù)綁定和豐富UI組件,接下來通過本文給大家介紹AngularJS入門心得之directive和controller通信過程,對angularjs相關知識感興趣的朋友一起學習吧
    2016-01-01
  • AngularJs ng-route路由詳解及實例代碼

    AngularJs ng-route路由詳解及實例代碼

    這篇文章主要介紹了AngularJs ng-route路由,這里整理相關資料及簡單實例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • Angular 輸入框實現(xiàn)自定義驗證功能

    Angular 輸入框實現(xiàn)自定義驗證功能

    AngularJS 表單和控件可以驗證輸入的數(shù)據(jù)。本文給大家介紹Angular 輸入框實現(xiàn)自定義驗證功能,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-02-02
  • 簡述AngularJS的控制器的使用

    簡述AngularJS的控制器的使用

    這篇文章主要介紹了AngularJS的控制器的使用,文中給出了具體的用于HTML中的對象示例,需要的朋友可以參考下
    2015-06-06
  • Angularjs 動態(tài)添加指令并綁定事件的方法

    Angularjs 動態(tài)添加指令并綁定事件的方法

    本篇文章主要介紹了Angularjs 動態(tài)添加指令并綁定事件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • angularjs 中$apply,$digest,$watch詳解

    angularjs 中$apply,$digest,$watch詳解

    這篇文章主要介紹了angularjs 中$apply,$digest,$watch詳解的相關資料,需要的朋友可以參考下
    2016-10-10
  • ionic3+Angular4實現(xiàn)接口請求及本地json文件讀取示例

    ionic3+Angular4實現(xiàn)接口請求及本地json文件讀取示例

    本篇文章主要介紹了ionic3+Angular4實現(xiàn)接口請求及本地json文件讀取示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 小談angular ng deploy的實現(xiàn)

    小談angular ng deploy的實現(xiàn)

    這篇文章主要介紹了小談angular ng deploy的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • angularjs下拉框空白的解決辦法

    angularjs下拉框空白的解決辦法

    這篇文章主要為大家詳細介紹了angularjs下拉框空白的解決方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

宜城市| 洞口县| 南平市| 义马市| 贵溪市| 盐亭县| 南京市| 邻水| 鹤壁市| 浦东新区| 桂阳县| 共和县| 平安县| 肇东市| 高清| 西青区| 东乌| 时尚| 开鲁县| 囊谦县| 盱眙县| 鄄城县| 曲松县| 赤城县| 噶尔县| 湄潭县| 临沧市| 乃东县| 鄂州市| 清水县| 湄潭县| 外汇| 左云县| 屏东市| 县级市| 海门市| 镇远县| 揭东县| 富蕴县| 连城县| 获嘉县|