Angular FormBuild电子邮件验证在init上失败(该值是一个对象)
在我的Angular v5.1.2项目中,我使用Angular FormBuild电子邮件验证在init上失败(该值是一个对象),angular,angular-forms,Angular,Angular Forms,在我的Angular v5.1.2项目中,我使用FormBuilder创建简单表单: this.userDetailsForm=this.formBuilder.group({ id:[{value:this.user.userid | |“”,disabled:true},[Validators.required]], 电子邮件:[{value:this.user.email | |''''},[Validators.required,Validators.email]], firstName
FormBuilder
创建简单表单:
this.userDetailsForm=this.formBuilder.group({
id:[{value:this.user.userid | |“”,disabled:true},[Validators.required]],
电子邮件:[{value:this.user.email | |''''},[Validators.required,Validators.email]],
firstName:[{value:this.user.firstName | |''''},[Validators.required]],
lastName:[{value:this.user.lastName | |''''},[Validators.required]]
});
我对电子邮件字段有问题。初始化表单后,它将变得无效。如果我将电子邮件字段值的初始化从对象符号切换到
email:[this.user.email,[Validators.required,Validators.email]]
事情进展顺利
我做了一点调查,在自定义验证器的帮助下,我意识到表单字段值是一个对象,在任何手动更改完成之前,它仍然是一个对象。比如说,
email:[{value:this.user.email | |''''},[Validators.required,this.myCustomValidator]],
在哪里
私有myCustomValidator(控件){
console.log(control.value);
}
提供以下信息:
control.value
等于{value:'test@test.test'}
在init上
控件。值
等于'test@test.test“
编辑后
这就是为什么我没有看到其他文件的问题:它们只有必需的验证器和!!({value:…})
始终为true
那么,是否可以对FormBuilder
字段初始化使用对象表示法?在我的例子中,会出现什么错误?我希望能够设置选项,如{value:'myValue',disabled:true}
,但由于验证器问题,目前我无法使用它 角度区分所谓的装箱和未装箱值
装箱值是满足以下条件的值:
\u isBoxedValue(formState:any):布尔值{
返回typeof formState==='object'&&
formState!==null&&
Object.keys(formState).length==2&&
formState中的“值”&&
formState中的“残疾人”;
}
正如我们所看到的,我们应该为装箱值提供值
和禁用
属性
如果传递未固定值,则angular会将其视为一个值
更多信息可以在这里找到