首页 > 解决方案 > 有没有办法在响应式表单上编写更少的访问器?

问题描述

我正在使用响应式表单,该表单有 20 个输入。例如一个是这样的

      <input formControlName="name" matInput>

因此,现在对于每个输入,我都需要编写一个访问器。像这样的东西

 get nameControl(): AbstractControl {
    return this.form.get('name');
  }

但是我需要为每个输入创建 20 个函数。有没有更快的方法来做到这一点,因为访问器不接受参数?

标签: angulartypescriptangular-reactive-forms

解决方案


诶,

如果我很好地理解了这个问题,就足以定义一个接受的方法fieldName

getControl(name: string): AbstractControl {
 return this.form.get(name);
}

或者,如果您想检查控件是否具有特定性,您可以在组件中编写类似的内容:

hasError(fieldName: string, errorLabel: string): boolean {
 return this.form.controls[fieldName].errors[errorLabel] !== undefined;
}

并在模板中:

<p *ngIf="hasError('surname', 'required')" class="message is-danger">
  The surname is mandatory
</p>

显示错误


推荐阅读