Angular 4:在自定义验证器函数中使用组件变量

时间:2018-03-19 06:28:30

标签: javascript angular typescript form-control

ngOnInit(): void {

this.formBuilder.group({
          nameFormCtrl: ['', this.validateName],
          });

}

validateName(c: FormControl) {
    return c.value === this.name ? null : {
      validateName: {
        valid: false
      }
    };
  }

这里this.name应该引用组件,而是引用未定义的

1 个答案:

答案 0 :(得分:10)

类方法没有绑定到当前实例的this,它们依赖于调用者在调用时将适当的this传递给函数,就像其他任何function一样Javascript

您可以使用箭头函数从声明上下文中捕获this,或使用this显式绑定bind

this.formBuilder.group({
      nameFormCtrl: ['', c=> this.validateName(c)],
      // OR
      nameFormCtrl: ['', this.validateName.bind(this)],
});