Angular 2(反应表单)列出表单控件中的所有验证规则(如pattern、minlength、maxlength),无论是否在错误对象中
我正在创建一个组件,其中需要列出输入的所有验证规则 home.component.htmlAngular 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
<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”在这里有两个验证器minlength和pattern。现在,除非您开始写入此输入,否则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不是一个角度的东西是什么意思,你应该参考是的,这是我认为我将使用的最后一个选项,但它需要用户做一些额外的工作。好的,我的坏用户是将使用我的验证库的开发人员。这对你来说有意义吗?你仍然必须为你的用户提供他们需要的东西。我认为我们的观点不一致。我正在创建一个组件,比如说输入验证,就像
我不明白你的意思。但是如果你认为它与你的问题相关,那么把它添加到你的问题中,也许可以得到更多的帮助