我在Angular 6中遇到以下问题:
我试图使用.setErrors()
手动在formControl上设置errors属性,然后使用.setValue()
设置值。 setValue方法。对我不利的是,.setValue()
重新运行验证并将formControl上的errors
属性重置为null
。像这样:
import { OnInit} from '@angular/core';
import { FormControl} from '@angular/forms';
export class CustomComponent implements OnInit {
formControl: FormControl;
ngOnInit() {
this.formControl = new FormControl();
this.formControl.setErrors({required: true});
this.formControl.setValue('foo'); // resets formControl.errors to null
console.log(this.formControl.errors); // returns null
}
}
有什么想法吗?
答案 0 :(得分:1)
我实际上知道了。您可以使用.disable()
来禁用对formControl的自动验证-如果您像我这样以抽象方式使用formControl,效果很好。
import { OnInit} from '@angular/core';
import { FormControl} from '@angular/forms';
export class CustomComponent implements OnInit {
formControl: FormControl;
ngOnInit() {
this.formControl = new FormControl();
this.formControl.disable({onlySelf: true, emitEvent: false});
this.formControl.setErrors({required: true});
this.formControl.setValue('foo');
console.log(this.formControl.errors); // returns 'foo'
}
}
如果需要在模板中与之交互,则可以使用.enable()
重新启用formControl。
在这里https://angular.io/api/forms/AbstractControl#disable