Javascript Validators.required抛出错误,即使其中有值
我的问题是,我有一个MatInput,如下所示:Javascript Validators.required抛出错误,即使其中有值,javascript,angular,validation,Javascript,Angular,Validation,我的问题是,我有一个MatInput,如下所示: <input matInput [(ngModel)]="name" i18n-placeholder="@@Placeholder" placeholder="Your name" [formControl]="InputControl" value="{{ fieldName }}"> 问题是它实际上工作得很好(值正确显示),但只要我想提交MatDialog表单,它就会告诉我不能提交空表单!这是因为我添加了一个“必需”验证器:
<input matInput [(ngModel)]="name" i18n-placeholder="@@Placeholder" placeholder="Your name" [formControl]="InputControl" value="{{ fieldName }}">
问题是它实际上工作得很好(值正确显示),但只要我想提交MatDialog表单,它就会告诉我不能提交空表单!这是因为我添加了一个“必需”验证器:
InputControl = new FormControl("", [Validators.required]);
所以输入字段中有一个值,但Angular显然没有注意到它?如果我在值中添加一个空格,然后将其删除,则该值完全相同,但不会抛出任何错误。
有人知道如何解决这个问题吗?这真的很烦人。
value
属性在角度上毫无价值
如果要为控件指定值,请通过控件本身执行:
ngOnInit(){
this.fieldName=“VALUE”;//从服务器获取,因此可能不同
如果(this.fieldName.startsWith(“前缀”){
this.fieldName=this.fieldName.substr(3);
}
//w/表格控制
this.InputControl.setValue(this.fieldName);
//w/模板驱动
this.name=this.fieldName;
}
您使用的是ngModel
,但也在谈论FormControl
。这是两种相互冲突的表单实现:ngModel
双向数据绑定不能与FormControl
和viceversa一起使用。使用formControl
指令将绑定到该formControl
对象,或者使用required
属性在不使用formControl的情况下进行所需输入。另请参见:您正在混合ngModel
和value和FormControl,是否确实要设置值?也许您想要设置输入的名称名称=“{{fieldName}}”
,或者您想要设置默认值?然后你应该更新this.name=this.fieldName
。(另外,请听关于你的问题的评论,不要同时使用formControl
&ngModel
)我已经尝试过了,但是后来我得到了一个expressionchangedafterithasbeencheckeederror异常。无论如何,我已经修复了它,只需要说这个.name(model name)而不是我的第一个想法。
InputControl = new FormControl("", [Validators.required]);