亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Angular8基礎(chǔ)應(yīng)用之表單及其驗證

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

一、前提

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

二、正文

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

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

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

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

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

4、將app.components.html中的內(nèi)容,替換成<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時必須定義,可以理解為當(dāng)前控件的名字
   #myName="ngModel" //檢查當(dāng)前控件狀態(tài)的出口,應(yīng)用:myName.valid、myName.errors等
   autocomplete="off" //關(guān)閉瀏覽器自帶的顯示歷史記錄 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">
    名稱重復(fù)
   </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、書寫指令——驗證名稱不能重復(fù)

  //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
   }
  }

三、碎碎念

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

總結(jié)

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

相關(guān)文章

  • 詳解在AngularJS的controller外部直接獲取$scope

    詳解在AngularJS的controller外部直接獲取$scope

    本篇文章主要介紹了詳解在AngularJS的controller外部直接獲取$scope ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • angularjs實現(xiàn)時間軸效果的示例代碼

    angularjs實現(xiàn)時間軸效果的示例代碼

    本篇文章主要介紹了angularjs實現(xiàn)時間軸效果的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Angular2整合其他插件的方法

    Angular2整合其他插件的方法

    本文給大家詳細(xì)分析了Angular2整合其他插件的方法,有興趣的朋友學(xué)習(xí)下。
    2018-01-01
  • Angular4中的checkbox?全選按鈕啟用禁用

    Angular4中的checkbox?全選按鈕啟用禁用

    這篇文章主要介紹了Angular4中的checkbox?全選按鈕啟用禁用的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • AngularJS中過濾器的使用與自定義實例代碼

    AngularJS中過濾器的使用與自定義實例代碼

    這篇文章運用實例代碼給大家介紹了angularjs中過濾器的使用和自定義過濾器,對大家學(xué)習(xí)AngularJS具有一定的參考借鑒價值,感興趣的朋友們可以參考借鑒。
    2016-09-09
  • AngularJS折疊菜單實現(xiàn)方法示例

    AngularJS折疊菜單實現(xiàn)方法示例

    這篇文章主要介紹了AngularJS折疊菜單實現(xiàn)方法,結(jié)合完整實例形式分析了AngularJS實現(xiàn)折疊菜單的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • Angular+Node生成隨機數(shù)的方法

    Angular+Node生成隨機數(shù)的方法

    這篇文章主要介紹了Angular+Node生成隨機數(shù)的方法,結(jié)合具體實例分析了Angular與Node結(jié)合控制前后端實現(xiàn)隨機數(shù)功能的相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • 詳解如何為你的angular app構(gòu)建一個第三方庫

    詳解如何為你的angular app構(gòu)建一個第三方庫

    這篇文章主要介紹了詳解如何為你的angular app構(gòu)建一個第三方庫,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 淺談Angular的12個經(jīng)典問題

    淺談Angular的12個經(jīng)典問題

    Angular作為目前最為流行的前端框架,受到了前端開發(fā)者的普遍歡迎。不論是初學(xué)Angular的新手,還是有一定Angular開發(fā)經(jīng)驗的開發(fā)者,了解本文中的12個經(jīng)典面試問題,都將會是一個深入了解和學(xué)習(xí)Angular2的知識概念的絕佳途徑。
    2021-05-05
  • Angular中ng-bind和ng-model的區(qū)別實例詳解

    Angular中ng-bind和ng-model的區(qū)別實例詳解

    這篇文章主要介紹了Angular中ng-bind和ng-model的區(qū)別實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評論