欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Angular跨字段驗證器中如何直接調(diào)用其它獨立的驗證器

 更新時間:2022年03月24日 10:36:46   作者:myskies  
我們在開發(fā)的時候都會用到表單,那么驗證器就是必不可少的東西,這篇文章主要給大家介紹了關(guān)于在Angular跨字段驗證器中如何直接調(diào)用其它獨立的驗證器的相關(guān)資料,需要的朋友可以參考下

angular中關(guān)于表單動態(tài)驗證的一種新思路一文中我們給出了Angular項目進行字段校驗的三種方法。本文我們將重點圍繞第一種方法展開討論。

假設(shè)有如下應(yīng)用:

該應(yīng)用的功能是對輸入的數(shù)值的奇偶數(shù)進行判斷,如果滿足條件,則啟用Submit按鈕,否則不啟用。

跨字段驗證

由于對輸入數(shù)值的校驗是根據(jù)輸入類型來區(qū)分的,所以這里我們需要一個跨輸入類型及輸入數(shù)值的驗證器:

ngOnInit(): void {
    this.formGroup.setValidators((formGroup) => {
      formGroup = formGroup as FormGroup;
      const type = formGroup.get('type').value as number;
      if (type === 0) {
        // 驗證是否是偶數(shù) 1??
      } else {
        // 驗證是否為奇數(shù) 1??
      }
    });
  }

雖然我們可以在1??處直接寫入驗證器的邏輯,但從分工的角度上來講,這往往是最壞的一種的方案。

為此,我們同時準備了驗證器:

/**
 * 數(shù)字校驗器
 */
export class NumberValidator {
  /**
   * 偶數(shù)校驗器
   */
  static isEven(control: AbstractControl): ValidationErrors | null {
    const value = +control.value as number;
    if (Number.isInteger(value) && value % 2 === 0) {
      return null;
    } else {
      return { isEven: '輸入的數(shù)字不是偶數(shù)' };
    }
  }

  /**
   * 奇數(shù)校驗器
   */
  static isOdd(control: AbstractControl): ValidationErrors | null {
    const value = +control.value as number;
    if (Number.isInteger(value) && value % 2 === 1) {
      return null;
    } else {
      return { isOdd: '輸入的數(shù)字不是奇數(shù)' };
    }
  }
}

使用獨立的驗證器

有了獨立的驗證器后,我們可以使用類似如下的代碼,直接在跨字段校驗器中進行調(diào)用:

ngOnInit(): void {
    this.formGroup.setValidators((formGroup) => {
      formGroup = formGroup as FormGroup;
      const type = formGroup.get('type').value as number;
      if (type === 0) {
        return NumberValidator.isEven(formGroup.get('value')); ??
      } else {
        return NumberValidator.isOdd(formGroup.get('value')); ??
      }
    });
  }

是的,在調(diào)用的時候?qū)⑿枰炞C的FormControl傳入即可。

如果我們的跨字段驗證器需要同時對多個字段進行校驗,則還可以這樣:

const result = {
          ...Validators.required(formGroup.get(this.formKeys.image)),
          ...Validators.required(formGroup.get(this.formKeys.imageLeftTopPoint)),
          ...Validators.required(formGroup.get(this.formKeys.imageRightBottomPoint)),
          ...MapPointValidator.isPoint(formGroup.get(this.formKeys.imageLeftTopPoint)),
          ...MapPointValidator.isPoint(formGroup.get(this.formKeys.imageRightBottomPoint))
        }

        return Object.keys(result).length === 0 ? null : result; ??

?? 處對返回的錯誤信息進行判斷,如果長度為0,則說明返回了{},直接返回null,否則返回多個驗證器拼接后的錯誤信息。

如果你想看到具體的代碼,請點擊:示例代碼

總結(jié)

到此這篇關(guān)于Angular跨字段驗證器中如何直接調(diào)用其它獨立的驗證器的文章就介紹到這了,更多相關(guān)Angular調(diào)用其它獨立驗證器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 前后端如何實現(xiàn)登錄token攔截校驗詳解

    前后端如何實現(xiàn)登錄token攔截校驗詳解

    這篇文章主要給大家介紹了關(guān)于前后端如何實現(xiàn)登錄token攔截校驗的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 詳解AngularJS中ng-src指令的使用

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

    這篇文章給大家詳細介紹了AngularJS中ng-src指令的使用,對大家學(xué)習(xí)AngularJS具有一定參考價值,有需要的朋友們可以參考借鑒。
    2016-09-09
  • AngularJS中的指令全面解析(必看)

    AngularJS中的指令全面解析(必看)

    下面小編就為大家?guī)硪黄狝ngularJS中的指令全面解析(必看)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • AngularJS基礎(chǔ)學(xué)習(xí)筆記之指令

    AngularJS基礎(chǔ)學(xué)習(xí)筆記之指令

    指令(Directives)是所有AngularJS應(yīng)用最重要的部分。盡管AngularJS已經(jīng)提供了非常豐富的指令,但還是經(jīng)常需要創(chuàng)建應(yīng)用特定的指令。這篇教程會為你講述如何自定義指令,以及介紹如何在實際項目中使用。
    2015-05-05
  • Angular搜索 過濾 批量刪除 添加 表單驗證功能集錦(實例代碼)

    Angular搜索 過濾 批量刪除 添加 表單驗證功能集錦(實例代碼)

    這篇文章主要介紹了Angular搜索 過濾 批量刪除 添加 表單驗證功能集錦(實例代碼),需要的朋友可以參考下
    2017-10-10
  • AngularJS入門教程之更多模板詳解

    AngularJS入門教程之更多模板詳解

    本文主要介紹AngularJS模板的資料知識,這里幫大家整理了詳細的模版資料,及實現(xiàn)示例代碼,幫助大家學(xué)習(xí)AngularJS的知識,有需要的小伙伴可以參考下
    2016-08-08
  • angularJS 入門基礎(chǔ)

    angularJS 入門基礎(chǔ)

    這篇文章主要介紹了angularJS 入門基礎(chǔ)的相關(guān)資料,需要的朋友可以參考下
    2015-02-02
  • angularJs關(guān)于指令的一些冷門屬性詳解

    angularJs關(guān)于指令的一些冷門屬性詳解

    下面小編就為大家?guī)硪黄猘ngularJs關(guān)于指令的一些冷門屬性詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 在Angular中使用NgTemplateOutlet創(chuàng)建可重用組件的流程步驟

    在Angular中使用NgTemplateOutlet創(chuàng)建可重用組件的流程步驟

    在 Angular 中,使用 NgTemplateOutlet 而不是創(chuàng)建特定組件,可以使組件在不修改組件本身的情況下輕松修改為各種用例,在本文中,您將接受一個現(xiàn)有組件并重寫它以使用 NgTemplateOutlet,需要的朋友可以參考下
    2024-03-03
  • AngularJS 最常用的功能匯總

    AngularJS 最常用的功能匯總

    angularjs功能在項目開發(fā)中經(jīng)常會用到,本文給大家總結(jié)了八種angularjs最常用的功能,感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02

最新評論