Angular 4 已禁用 FormControl 不检查或显示验证错误

Angular 4 disabled FormControl does not check or show validating errors

我有 FormControl 对象绑定到 input 元素。

<input matInput [formControl]="nameControl">

初始化如下

this.nameControl = new FormControl({value: initValue, disabled: true}, [Validators.required, UniqueValueValidator(uniqueValues)]);

禁用 FormControl 时,它不会检查任何错误。

问题是如何保持控件禁用并仍然显示错误。

当表单控件为 disabled 时,无法获得 validinvalid 状态。

一个表单控件有四种状态:pendingdisabledvalidinvalid只会保留其中一种状态。 所以当表单控件的状态为disabled时,它只会是disable,不会是valid,也不会是invalid,见docs.


从技术上讲,您可以模拟验证过程,但任何基于 input.hasError('...')invalid/valid 的东西都不会起作用。

<input matInput [formControl]="nameControl">
<div *ngIf="form.get('nameControl').disabled && form.get('nameControl').value === ''">
  field is required.
</div>