angular - 响应式(Reactive)表单验证器在 Angular 中不起作用

标签 angular angular6 angular-validation

我的输入字段中有一个所需类型和 maxLength 的验证器,并且我试图在 HTML 上使用最干净的代码。我尝试执行以下操作,但不起作用

HTML

(这行不通)

<form [formGroup]="creditCardForm">
      <input type="text" pInputText formControlName="cardHolderName" required maxlength #cardHolderName/>
            <label *ngIf="form.cardHolderName.invalid &&
            (form.cardHolderName.dirty || form.cardHolderName.touched)" class="invalidField">Cardholder name is required</label>
</form>

TS

form = this.buildCreditCardForm(this.fb).controls;
.
.
buildCreditCardForm(fb: FormBuilder): FormGroup {
   return fb.group({
      cardHolderName: ['', [Validators.required, Validators.maxLength(50)]],
    .
    .
}

HTML(这可行,但太长了,脏了)

<form [formGroup]="creditCardForm">
<input type="text" pInputText formControlName="cardHolderName" required maxlength #cardHolderName/>
        <label *ngIf="fcreditCardForm.controls.cardHolderName.invalid &&
        (creditCardForm.controls.cardHolderName.dirty || creditCardForm.controls.cardHolderName.touched)" class="invalidField">Cardholder
          name is required</label>
</form>

最佳答案

您正在混合响应式(Reactive)验证器和模板验证器。不知道为什么你要把事情复杂化, react 形式很简单。

为您打造了一个Demo与您的表格:

HTML:

<form [formGroup]="creditCardForm">
    <input type="text" formControlName="cardHolderName"/>
    <label *ngIf="creditCardForm.get('cardHolderName').invalid">Cardholder name is required</label>
</form>

组件:

  creditCardForm;

  constructor(private fb: FormBuilder) { }

  ngOnInit() {
    this.creditCardForm = new FormGroup({
      'cardHolderName': new FormControl(null, [Validators.required, Validators.maxLength(5)])
    });
  }

将其拿走,增强并根据您的需求进行调整。

关于angular - 响应式(Reactive)表单验证器在 Angular 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52232276/

相关文章:

javascript - 黑客新闻 API - 获取所有新闻

Angular-jwt token 未在我的 http 请求 header 中发送

html - 根据开始和结束日期过滤 Angular 6 元素

angular - 如何将自定义验证器添加到 FormArray?

javascript - Angular 5 仅对模糊进行验证?

javascript - 如果不是未定义的,如何从多个对象中删除属性?

node.js - 在 Angular 6 中导出到 Excel 或 CSV

angular - 创建没有文件夹的组件

angular - 异步验证器未执行

angular - 卡住列标题 Kendo 网格 Angular 2