Вероятно, ошибки элемента управления Реактивной формы сбрасываются после его рендеринга в представлении.
Вполне вероятно, что после того, как поля ввода добавлены в представление, Angular проверяет проверки и затем сбрасывает ваши ошибки управления, потому что он не видит никаких в элементе управления формы (нет установленных валидаторов).
Если вы внесете свои изменения в ngAfterViewInit()
, он будет работать нормально. (Но да, тогда вам придется вызывать обнаружение изменений после этого, иначе вы будете получать ошибки "expressionChangedAfterItHasBeenCheckedError").
constructor(private _cdr: ChangeDetectorRef) { }
ngOnInit() {
const name = new FormControl('A Name');
const street = new FormControl('A Street');
this.formData = new FormGroup({
name,
street
});
}
ngAfterViewInit() {
this.formData.get('name').setErrors({'something': true})
this._cdr.detectChanges();
}
См. Пример здесь: https://plnkr.co/edit/RgEoRPF8jSp203xfwiFS?p=preview