Validators.required会引发错误,即使其中包含一个值

时间:2018-11-12 11:50:38

标签: javascript angular validation

我的问题是我有一个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没注意到它吗?如果我在值上添加一个空格,然后再将其删除,则该值是完全相同的,但是不会引发任何错误。 有谁知道如何解决这一问题?真烦人。

1 个答案:

答案 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;
}