Angular 2(反应表单)列出表单控件中的所有验证规则(如pattern、minlength、maxlength),无论是否在错误对象中

Angular 2(反应表单)列出表单控件中的所有验证规则(如pattern、minlength、maxlength),无论是否在错误对象中,angular,angular-reactive-forms,Angular,Angular Reactive Forms,我正在创建一个组件,其中需要列出输入的所有验证规则 home.component.html <input-validation> <input type="text" class="form-control" formControlName="name"> </input-validation> home.component.ts export class HomeComponent implements OnInit { public m

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

home.component.html

<input-validation>
   <input type="text" class="form-control" formControlName="name">
</input-validation>

home.component.ts

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']
            })
        });

    }
}
导出类HomeComponent实现OnInit{
公共myForm:FormGroup;
构造函数(私有_fb:FormBuilder){}
恩戈尼尼特(){
this.myForm=this.\u fb.group({
名称:['',[Validators.minLength(5),Validators.pattern('^[0-9]*$)]],
地址:本集团({
街道:['',验证器。必需],
邮政编码:['8000']
})
});
}
}
对于我正在使用的模板驱动表单

_罗氏验证器

FormControlName的属性。

但我注意到,\u rawValidators总是为被动表单返回空数组

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

因此,如果有人能帮助我了解ReactiveForms是如何工作的(验证),或者它在哪里存储所有的验证程序,那将是非常值得赞赏的

感谢文档中的

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

所以你有一个数组中的验证器。您可以事先将其分配给变量,然后在其他任何地方获取它。像

this.validator1 = [ Validators.minLength(5), Validators.pattern('^[0-9]*$')]
...
console.log(this.validator1);

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

例如,对于带有
minlength=“3
”验证器的输入,当您仅输入2个字符时,返回值如下:

{"minlength":{
    "requiredLength":3,
    "actualLength":2
  }
}
然而,当所需的验证器失败时,它将返回以下内容:

{"required": true}

_rawValidators不是一个角度的东西,你应该使用一些代码,其中验证器被分配给_rawValidators变量?你说的_rawValidators不是一个角度的东西是什么意思,你应该参考是的,这是我认为我将使用的最后一个选项,但它需要用户做一些额外的工作。好的,我的坏用户是将使用我的验证库的开发人员。这对你来说有意义吗?你仍然必须为你的用户提供他们需要的东西。我认为我们的观点不一致。我正在创建一个组件,比如说输入验证,就像
我不明白你的意思。但是如果你认为它与你的问题相关,那么把它添加到你的问题中,也许可以得到更多的帮助