“ forbiddenNameValidator(new RegExp(this.forbiddenName,'i'))(control)”的作用是什么?

时间:2019-03-02 18:08:49

标签: angular typescript

我是一名Java开发人员,并且是Angular的新宝贝。我对Typescript语法有点困惑。

我正在阅读此article,特别是“自定义验证器”和此代码段

@Directive({
  selector: '[appForbiddenName]',
  providers: [{provide: NG_VALIDATORS, useExisting: ForbiddenValidatorDirective, multi: true}]
})
export class ForbiddenValidatorDirective implements Validator {
  @Input('appForbiddenName') forbiddenName: string;

  validate(control: AbstractControl): {[key: string]: any} | null {
    return this.forbiddenName ? forbiddenNameValidator(new RegExp(this.forbiddenName, 'i'))(control)
                              : null;
  }
}

,forbiddenNameValidator函数的定义为:

export function forbiddenNameValidator(nameRe: RegExp): ValidatorFn {
  return (control: AbstractControl): {[key: string]: any} | null => {
    const forbidden = nameRe.test(control.value);
    return forbidden ? {forbiddenName: {value: control.value}} : null;
  };
}

forbiddenNameValidator(new RegExp(this.forbiddenName,'i'))(control)的翻译是什么

2 个答案:

答案 0 :(得分:1)

如果值this.forbiddenName为假(false, null, undefined, 0, false),则它将返回null,否则它将使用给定的forbiddenNameValidator调用函数regexi参数中的RegExp用于制作正则表达式case-insensitive

答案 1 :(得分:0)

对我来说很奇怪,但是你可以做这样的事情

export function f1(param1) {
  return (param2) => {
      return (param3) => {
        console.log(param1, param2, param3);
      };
  };
}

然后调用这样的函数

f1(1)(2)(3);