Angular 2 - 自定义验证器问题

时间:2016-05-31 15:35:21

标签: angular angular2-forms

我正在尝试创建一个简单的自定义验证器。基本上如果一个变量(代表)为真,则该字段必须是必填字段。就是这样。

我不知道为什么,但我无法代表变量读取。这是未定义的。关于如何处理这个问题的任何线索?

rows between unbounded preceding and current row

2 个答案:

答案 0 :(得分:3)

问题是您引用了一个函数,因此调用此函数时this与组件对象不对应。

您可以尝试以下操作来强制在组件实例的上下文中执行该函数:

this.name = new Control('', (control) => {
  this.validateName(control);
});

或使用bind方法:

this.name = new Control('', this.validateName.bind(this));

在TypeScript中使用bind方法时要小心:

答案 1 :(得分:0)

嗨,我认为这种方法对你有用。

addCustomerForm :any;
constructor (private builder: FormBuilder){

this.customername = new Control("", Validators.compose([Validators.required, 
ValidationService.alphaValidator]));

this.addCustomerForm = formBuilder.group({
     customername: this.customername,
 });

 this.customerName = '';