Angular动态检查和更新验证器

时间:2017-12-28 15:01:37

标签: angular validation angular-directive

我需要从指令动态地将验证器添加到角度表单控件。

简化为:

@Directive({ selector: 'my-directive' })
export class MyDirective implements AfterViewInit  {
  @Input() myDirective: boolean;
  control: AbstractControl;
  constructor(private form: NgForm, private el: ElementRef) {}
  ngAfterViewInit() {
    setTimeout(() => {
      const name = this.el.nativeElement.getAttribute('name');
      this.control = this.form.controls[name];
      // this.control.setValidator... kills my other validators.
    });
  }
}

如何检查此控件是否具有“required”属性,如果没有则设置它?没有覆盖其他验证器?

1 个答案:

答案 0 :(得分:0)

if(!this.control.hasError('required') {
   let existingErrors = this.control.errors;
   existingErrors['required'] = {'required': ''};
   this.control.setErrors(existingErrors);
}

首先检查控件是否已存在必需的错误,如果没有,则将其添加到现有错误中,并将更新后的错误设置回控件中