如何在Angular中进行自定义验证?

如何在Angular中进行自定义验证?,angular,typescript,validation,Angular,Typescript,Validation,我现在有一个自定义验证问题 我有这个方法: validateInstagram(): ValidatorFn { return (control: AbstractControl): ValidationErrors | null => { const value = control.value; let valid = false; if (!value) { return null; } let m

我现在有一个自定义验证问题

我有这个方法:

validateInstagram(): ValidatorFn {
    return (control: AbstractControl): ValidationErrors | null => {
      const value = control.value;
      let valid = false;

      if (!value) {
        return null;
      }

      let match = value.match(keys.ctrl_instagram_pattern);

      if(match === null || match![0] !== value) valid = false; else valid = true;

      console.log(valid ? { instaValid: true } : null);
      
      return valid ? { instaValid: true } : null;
    }
  }
此方法通过regula表达式验证instagram帐户是否有效

您可以看到,在返回中,如果帐户有效,它将返回一个对象,但在其他情况下,它将返回一个空值

问题是,当字符串通过验证时,我得到以下结果:

我得到null并且控制器状态有效,但我认为它是向后的,不是吗

根据这一逻辑,如果我在报税表中填写以下内容:

返回有效吗?null:{instaValid:true}

我得到了我想要的结果


我怎样才能解决这个问题?

我这样使用它,也许能帮助您:

  /* Example form validation custom*/
itemInList(): ValidatorFn {
    return (control: AbstractControl): { [key: string]: any } | null => {
      if (control.value?.name) {
        const forbidden = this.list.find(itemList => itemList.name === control.value.name);
        return forbidden === undefined ? { notInList: { value: true } } : null;
      } else {
        return { notInList: { value: false } };
      }
    };
  }

验证器函数仅用于在验证失败时返回对象。因此,当前函数实际上有缺陷,应该以语句
return valid结束?null:{instaValid:false}aaaaahhhh好的。。。我以为是另一种方式。。。我认为验证函数在对象有效时返回一个对象。。。非常感谢你!这对我也有帮助!它遵循与奥利弗评论相同的逻辑。也谢谢你!