Javascript Validators.required抛出错误,即使其中有值

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表单,它就会告诉我不能提交空表单!这是因为我添加了一个“必需”验证器:

我的问题是,我有一个MatInput,如下所示:

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