首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角2(反应性表单)列出表单控件中的所有验证规则(如模式、最小长度、最大长度),无论是否在错误对象中。

角2(反应性表单)列出表单控件中的所有验证规则(如模式、最小长度、最大长度),无论是否在错误对象中。
EN

Stack Overflow用户
提问于 2017-08-14 05:43:36
回答 2查看 3K关注 0票数 2

我正在创建一个组件,在其中我需要列出输入的所有验证规则。

home.component.html

代码语言:javascript
复制
<input-validation>
   <input type="text" class="form-control" formControlName="name">
</input-validation>

home.component.ts

代码语言:javascript
复制
export class HomeComponent implements OnInit {
    public myForm: FormGroup;

    constructor(private _fb: FormBuilder) { }

    ngOnInit() {
        this.myForm = this._fb.group({
            name: ['', [ <any>Validators.minLength(5), <any>Validators.pattern('^[0-9]*$')]],
            address: this._fb.group({
                street: ['', <any>Validators.required],
                postcode: ['8000']
            })
        });

    }
}

对于我正在使用的模板驱动表单

_rawValidators

FormControlName.性质

但是我注意到,_rawValidators总是返回用于反应性表单的空数组。

正如您在上面的示例中所看到的,formControlName="name"在这里有两个验证器,minlengthpattern。现在,除非您开始在此输入中写入,否则FormControl的错误对象为null。

因此,如果有人能帮助我理解ReactiveForms是如何工作的(验证),或者它存储在哪里,那么它的所有验证器都会非常感激。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-14 06:40:32

从文件

FormControl构造函数接受三个可选参数:初始数据值、验证器数组和异步验证器数组。

所以你把你的验证器放在一个数组里。您可以事先将它赋值给一个变量,然后在其他地方得到它。喜欢

代码语言:javascript
复制
this.validator1 = [ Validators.minLength(5), Validators.pattern('^[0-9]*$')]
...
console.log(this.validator1);
票数 0
EN

Stack Overflow用户

发布于 2017-10-24 20:56:56

不确定这是否是您想要的,但是AbstractControl上的AbstractControl属性返回一个由所有验证逻辑组成的函数。如果调用该函数并传入要验证的控件,它将应用所有验证,并返回一个对象,其中包含每个失败验证器的信息,如果没有验证器失败,则返回null

例如,在带有minlength="3“验证器的输入中,当您只输入两个字符时,以下是返回值:

代码语言:javascript
复制
{"minlength":{
    "requiredLength":3,
    "actualLength":2
  }
}

而当所需的验证程序失败时,它将返回以下内容:

代码语言:javascript
复制
{"required": true}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45668064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档