有没有办法检查是否需要控制?
当我实现了一个接受FormControl
且不仅具有input
而且具有验证错误的专用表单域组件时,便出现了问题。由于需要某些字段,因此最好让用户知道*
是否需要它。
有没有办法检查@Input() control: FormControl
中的Validators.required
并显示一个星号?
最佳答案
您可以执行以下操作:
import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators, AbstractControl } from '@angular/forms';
@Component({...})
export class AppComponent {
form: FormGroup = new FormGroup({
control: new FormControl(null, Validators.required)
});
get validator() {
const validator = this.form.get('control').validator({} as AbstractControl);
console.log(validator);
if (validator && validator.required) {
return true;
}
}
}
然后在您的模板中:
<form [formGroup]="form" (submit)="onSubmit()">
Control: <span *ngIf="validator">*</span> <input type="text" formControlName="control">
<button>Submit</button>
</form>
注意:只需使用此
AbstractControl
将窗体控件作为this.form.get('control').validator({} as AbstractControl);
类型这将返回一个带有
FormControl
上存在的验证器列表的Object。然后,您可以检查对象中的required
键。如果存在并且其值为true
,则可以确保在FormControl
上应用了必需的验证器。这是供您参考的Working Sample StackBlitz。
关于angular - Angular FormControl检查(如果需要),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53557690/