Angular响应式表单从AbstractControl获取当前设置的验证规则。

6 浏览
0 Comments

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\'。我该如何做到这一点?

0
0 Comments

问题的原因是希望能够在Angular的响应式表单中获取当前设置的验证规则,并根据规则的存在与否来显示一个星号。最初尝试的方法是通过判断错误对象中的'required'属性来实现,但是当错误消失时,星号也会消失。

在问题的编辑中,提到了一个解决方法,通过以下代码可以获取到验证器:

let nameControlVald = this.form.controls['name'].validator('');
console.log(nameControlVald, "validators");

这似乎是解决问题的最佳方法。因此,将this.form.controls['name']传递给指令,并设置上述验证器,然后检查required是否存在。

感谢提供解答,但是该解答仅在出现错误时有效,而不是在设置规则时。我需要在字段被设置为必填时添加星号。

经过进一步讨论和修改,最终找到了解决方法。

0