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

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

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

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

假設有如下應用:

該應用的功能是對輸入的數(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,否則返回多個驗證器拼接后的錯誤信息。

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

總結

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

相關文章

最新評論

仁布县| 巩留县| 正定县| 高密市| 沂源县| 潍坊市| 阿拉善盟| 招远市| 宜丰县| 大丰市| 山西省| 西和县| 阿克苏市| 资溪县| 车致| 凯里市| 河津市| 泌阳县| 高清| 电白县| 洪泽县| 东阿县| 许昌市| 凉城县| 芜湖市| 天等县| 平塘县| 屏东县| 花莲县| 崇信县| 巨野县| 福清市| 文水县| 北川| 绥芬河市| 云南省| 自贡市| 安丘市| 大港区| 万州区| 禹州市|