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
时,无法获得 valid
或 invalid
状态。
一个表单控件有四种状态:pending
、disabled
、valid
和invalid
,只会保留其中一种状态。
所以当表单控件的状态为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>
我有 FormControl
对象绑定到 input
元素。
<input matInput [formControl]="nameControl">
初始化如下
this.nameControl = new FormControl({value: initValue, disabled: true}, [Validators.required, UniqueValueValidator(uniqueValues)]);
禁用 FormControl
时,它不会检查任何错误。
问题是如何保持控件禁用并仍然显示错误。
当表单控件为 disabled
时,无法获得 valid
或 invalid
状态。
一个表单控件有四种状态:pending
、disabled
、valid
和invalid
,只会保留其中一种状态。
所以当表单控件的状态为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>