Angular响应式表单从AbstractControl获取当前设置的验证规则。
Angular响应式表单从AbstractControl获取当前设置的验证规则。
我想要实现的是,当给定的控件具有验证规则\'required\'时,在输入框上自动设置一个星号。\n组件ts:\n
this.form = this.fb.group({ name: ['', [Validators.required]] });
\n组件模板:\n
\n我的指令:\n
@Directive({ selector: '[appRequiredAsterisk]' }) export class RequiredAsteriskDirective implements OnInit { @Input() appRequiredAsterisk: AbstractControl; constructor(private el: ElementRef) { } ngOnInit(): void { // 在这里添加星号.. } }
\n我找不到一种方法来判断AbstractControl appRequiredAsterisk
是否设置了验证规则\'required\'。我该如何做到这一点?
问题的原因是希望能够在Angular的响应式表单中获取当前设置的验证规则,并根据规则的存在与否来显示一个星号。最初尝试的方法是通过判断错误对象中的'required'属性来实现,但是当错误消失时,星号也会消失。
在问题的编辑中,提到了一个解决方法,通过以下代码可以获取到验证器:
let nameControlVald = this.form.controls['name'].validator(''); console.log(nameControlVald, "validators");
这似乎是解决问题的最佳方法。因此,将this.form.controls['name']
传递给指令,并设置上述验证器,然后检查required
是否存在。
感谢提供解答,但是该解答仅在出现错误时有效,而不是在设置规则时。我需要在字段被设置为必填时添加星号。
经过进一步讨论和修改,最终找到了解决方法。