我的问题是我有一个MatInput,如下所示:
<input matInput [(ngModel)]="name" i18n-placeholder="@@Placeholder" placeholder="Your name" [formControl]="InputControl" value="{{ fieldName }}">
在相应的组件中,我声明了fieldName: string;
,并在ngOnInit()
方法中设置了值:
ngOnInit() {
this.fieldName = "VALUE"; // obtained from server so it may differ
if(this.fieldName.startsWith("PREFIX")) { // if value starts with a given prefix I want to remove it
this.fieldName = this.fieldName.substr(3);
}
}
问题在于它实际上运行良好(值显示正确),但是一旦我要提交MatDialog表单,它就告诉我不能提交空表单!那是因为我添加了“必需的”验证器:
InputControl = new FormControl("", [Validators.required]);
因此在输入字段中有一个值,但是显然Angular没注意到它吗?如果我在值上添加一个空格,然后再将其删除,则该值是完全相同的,但是不会引发任何错误。 有谁知道如何解决这一问题?真烦人。
答案 0 :(得分:0)
value
属性在Angular中毫无价值。
如果要为控件提供值,请通过控件本身进行操作:
<input matInput [(ngModel)]="name" i18n-placeholder="@@Placeholder" placeholder="Your name" [formControl]="InputControl">
ngOnInit() {
this.fieldName = "VALUE"; // obtained from server so it may differ
if(this.fieldName.startsWith("PREFIX")) {
this.fieldName = this.fieldName.substr(3);
}
// w/ form control
this.InputControl.setValue(this.fieldName);
// w/ template driven
this.name = this.fieldName;
}