亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Angular8如何實現表單及其驗證

發布時間:2021-08-18 15:09:48 來源:億速云 閱讀:128 作者:小新 欄目:web開發

小編給大家分享一下Angular8如何實現表單及其驗證,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

正文

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

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

2、修改pakage.json文件——添加參數,方便開發,命令行輸入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" //雙向數據綁定
   name="name" //使用form時必須定義,可以理解為當前控件的名字
   #myName="ngModel" //檢查當前控件狀態的出口,應用:myName.valid、myName.errors等
   autocomplete="off" //關閉瀏覽器自帶的顯示歷史記錄 h6新屬性
   [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 發請求')
  }
  ...

(二)、驗證表單

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

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

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

  export function nameValidator(nameList: string[]): ValidatorFn {
    return (control: AbstractControl): { [key: string]: any } | null => {
      //依據指令中傳遞進來的名稱列表進行判斷,如果包含,就返回一個對象,對象的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 { //實現Validator接口
  
   @Input('appVerifyName') //接收驗證規則(reg),或者你希望傳到指令中的什么
   nameList: string[];
  
   validate(control: AbstractControl): { [key: string]: any } | null {
    return this.name ? nameValidator(nameList)(control) : null
   }
  }

以上是“Angular8如何實現表單及其驗證”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

元氏县| 沧州市| 资阳市| 本溪市| 长汀县| 阿勒泰市| 常德市| 乐清市| 南开区| 普兰县| 永定县| 咸阳市| 伊春市| 东平县| 钦州市| 安康市| 察哈| 开原市| 金门县| 神农架林区| 沁水县| 汨罗市| 鹤壁市| 濮阳县| 长宁区| 棋牌| 波密县| 阳朔县| 西峡县| 淮安市| 彭水| 红河县| 河南省| 通化市| 高雄县| 德格县| 和林格尔县| 措美县| 邵东县| 翼城县| 洛宁县|