javascript - 如何将另一个值传递给表单验证方法?

标签 javascript angular typescript

我创建了如下的表单组

import { setPwd } from './validators';

@Component({
....
export class pwdComp {
     ...

     this.userFormPassword = this.fb.group({
       'password': ['', [ setPwd ]]
     });

在我的另一个 ts 文件中有 setPwd 方法

export function setPwd(c: FormControl) {
  const SINGLE_LETTER_NUMERAL = /^\=\?$/;
  return SINGLE_LETTER_NUMERAL.test(c.value) ? null : {
    pwd: {
      valid: false
    }
  };
}

上面的脚本工作正常。但是现在我的新场景是我想将 pattern 属性传递给 setPwd 方法,所以我尝试如下

this.userFormPassword = this.fb.group({
    'password': ['', [ setPwd('**') ]]
});

setPwd 方法是

export function setPwd(c: FormControl, newPattern) {

但是它抛出了错误。如何将额外的值传递给外部函数。

最佳答案

你应该像下面这样改变你的功能

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

this.userFormPassword = this.fb.group({
    'password': ['', setPwd('**') ]
});

关于javascript - 如何将另一个值传递给表单验证方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921919/

相关文章:

javascript - 访问 JSON 子项时出现问题

javascript - 如何在 jQuery datetimepicker 中添加 12 小时格式?

javascript - Angular使订阅等待响应

typescript - ts-node 执行带有模块导入和模块定义的 typescript

node.js - 即使我在 config.json 的外部部分中定义,jQuery 也不会作为模块加载

javascript - 递减 While 循环排序 Javascript

javascript - 如何更改 Javascript 中的 URl 链接

Angular 2 : how to get custom response headers (CORS issue)

angular - 我在 Angular 2 中匹配密码验证时遇到错误

angular - 如何在不在 url 中的状态之间传递参数?