【问题标题】:Angular reactive forms get the currently set validation rules from AbstractControlAngular 响应式表单从 AbstractControl 获取当前设置的验证规则
【发布时间】:2018-03-02 14:38:24
【问题描述】:

当给定控件具有“必需”验证规则时,我想要实现的是自动在输入上设置星号。

组件 ts:

this.form = this.fb.group({
    name: ['', [Validators.required]]
});

组件模板:

<label>
    <span>Name</span>
    <input type="text" [appRequiredAsterisk]="form.get('name')" formControlName="name" id="name">
</label>

我的指令:

@Directive({
    selector: '[appRequiredAsterisk]'
})
export class RequiredAsteriskDirective implements OnInit {
    @Input() appRequiredAsterisk: AbstractControl;

    constructor(private el: ElementRef) { }

    ngOnInit(): void {
        // Append Asterisk here..
    }
}

我找不到查看是否在AbstractControl appRequiredAsterisk 上设置了“必需”验证规则的方法。我该怎么做?

【问题讨论】:

标签: angular validation angular-directive angular-reactive-forms


【解决方案1】:

类似:-

let isRequired = appRequiredAsterisk.errors['required'];

if (isRequired) {
    //show asterix
}

编辑:

上面的问题是,很明显,当错误消失时,asterix 也会消失。

找到了这个here,它实际上给了你验证器

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

看来这是解决您的问题的最佳方式。因此,将this.form.controls['name'] 传递给指令并设置上述内容,然后检查required 是否存在。

【讨论】:

  • 谢谢,但这是出现错误的时候。不是在制定规则时。当字段设置为必填时,我需要添加星号。
  • 啊,好吧,抱歉弄错了 - 会更新我的答案
  • 更新了我的答案
猜你喜欢
  • 1970-01-01
  • 2018-12-20
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多