我有以下代码,验证注册表单并添加错误消息,如果输入的数据无效:
this.registerForm = _fb.group({
// email: new Control(this.registerContact.email,
// Validators.compose([Validators.required, Validators.minLength(4)])),
emails:_fb.group({
email: new Control(this.registerContact.email,
Validators.compose([Validators.required, Validators.minLength(4)])),
}),
passwords:_fb.group({
password: new Control(this.registerContact.password,
Validators.compose([Validators.required, Validators.minLength(8)])),
repeat_password: new Control(this.registerContact.repeat_password,
Validators.required)},{
validator:checkRepeatPassword})
});
我需要从 this.registerForm <获取 密码 和 repeat_password / em> 。 现在我使用以下代码:
...
onValueChanged(data: any) {
for (let fields in this.formError) {
// console.log('fields: '+fields);
for(let field in this.formError[fields]){
// console.log(' field: '+field);
if (this.formError.hasOwnProperty(fields)) {
let innerContol = this.registerForm.controls[fields].controls[field];
let hasError = innerContol.dirty &&!innerContol.valid;
console.log('hasError?:'+hasError)
this.formError[fields][field] = '';
if (hasError) {
for (let key in innerContol.errors) {
if(field=='repeat_password'){
// console.log('repat_error:'+key)
}
if (innerContol.errors.hasOwnProperty(key)) {
console.log(' >>>outer repeat_password error!'+innerContol.value);
this.formError[fields][field] += this._validationMessages[field][key] + ' ';
console.log(' >>>add follow errorMessage:'+this._validationMessages[field][key]);
}
}
}
}
}
}
所以,这是有效的,但我在这个方法中有红色下划线
让innerContol = this.registerForm.controls [fields]。 controls [field];
警告: 属性'控件'在“AbstractControl”类型上不存在
也许有更好的方式来获取 密码 和 repeat_password ?
有一个指向github的链接: