У меня проблема с Angular 6:
Я пытаюсь вручную установить свойство ошибок в formControl с помощью .setErrors() и затем установить значение с помощью .setValue(). Метод setValue. К моему ущербу, .setValue() повторно запускает проверку и сбрасывает свойство errors в formControl на 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.info(this.formControl.errors); // returns null
}
}
Любые идеи?





Я действительно понял это. Вы можете использовать .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.info(this.formControl.errors); // returns 'foo'
}
}
Вы можете снова включить formControl с помощью .enable(), если вам нужно взаимодействовать с ним в шаблоне.
Подробнее здесь https://angular.io/api/forms/AbstractControl#disable