0

给定一个控件titleCtrl,有没有办法设置它的有效属性?

我试过了

。镖

titleCtrl.valid = false;

但它会引发错误。不过,获得有效状态是没有问题的。

4

1 回答 1

2

a的valid属性Control是只读属性。您无法分配该值。让某些东西变得无效的正确方法是创建一个自定义验证器

这是来自 Angular2 TypeScript 文档的示例代码片段

class CustomValidatorDirective implements Validator {
  validate(c: Control): {[key: string]: any} {
    return {"custom": true};
  }
}

但是,您的验证不需要在单独的类中,当您创建ControlGroup使用时,FormBuilder您可以在各个控件上设置自定义验证。

@Component({...})
class MyComponent{
  myForm: ControlGroup;

  constructor(formBuilder: FormBuilder){
    this.myForm = formBuilder.group({
        myField: ['', Validators.compose([this.customValidation.bind(this)])],
    });
  }

  customValidation(control: Control){
    if(/* some condition */){
      return {'myValidatorKey': true};
    }
  }
}

此技术可用于验证任何字段,包括依赖于其他字段值和任何其他逻辑的字段。

遗憾的是,Angular2 团队尚未发布任何有关使用的文档,因此我无法在中提供示例,但是我已尝试消除尽可能多的打字稿特定噪音,以帮助使答案尽可能通用。

于 2016-02-06T03:11:18.417 回答