国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:36:02
字體:
來源:轉載
供稿:網友

一、前提

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

二、正文

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

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" //關閉瀏覽器自帶的顯示歷史記錄 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 發請求')  }  ...

(二)、驗證表單

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   }  }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 天全县| 寿宁县| 万州区| 西平县| 宁陕县| 威海市| 内丘县| 博爱县| 启东市| 应用必备| 会泽县| 昌黎县| 邳州市| 光泽县| 安顺市| 浮山县| 隆昌县| 凉山| 都安| 吉林市| 扎兰屯市| 吴堡县| 封开县| 神池县| 保山市| 江阴市| 黄石市| 乌苏市| 湟源县| 铁岭县| 望奎县| 崇州市| 丰宁| 克山县| 邓州市| 满洲里市| 靖远县| 固安县| 岑巩县| 襄垣县| 桑日县|