我需要从指令动态地将验证器添加到角度表单控件。
简化为:
@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”属性,如果没有则设置它?没有覆盖其他验证器?
答案 0 :(得分:0)
if(!this.control.hasError('required') {
let existingErrors = this.control.errors;
existingErrors['required'] = {'required': ''};
this.control.setErrors(existingErrors);
}
首先检查控件是否已存在必需的错误,如果没有,则将其添加到现有错误中,并将更新后的错误设置回控件中