【问题标题】:How to pass another value to form validation method?如何将另一个值传递给表单验证方法?
【发布时间】:2019-02-28 09:07:00
【问题描述】:

我已经创建了如下的表单组

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
    }
  };
}

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

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

setPwd 方法是

export function setPwd(c: FormControl, newPattern) {

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

【问题讨论】:

标签: javascript angular typescript


【解决方案1】:

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

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('**') ]
});

【讨论】:

  • 感谢您的回答,但我收到 cannot read property 'controls' of undefined 错误。
  • 是未定义的控制还是未定义的控制?
  • 你是否从 angular 导入了 ValidatorFn 和 AbstractControl ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多