【问题标题】:Angular => Reactive Forms : disable button when it encounters an empty input fieldAngular => Reactive Forms:遇到空输入字段时禁用按钮
【发布时间】:2020-08-19 06:34:55
【问题描述】:

什么是响应式表单禁用按钮的方法,例如,在表单中遇到空输入字段时?

也就是说,什么时候必须满足所有字段才能启用按钮?


我确实知道 TemplateDriven 方式是这样的:

<div class="row mt-5">
  <div class="col-md-6 mx-auto">
    <h2 class="text-center">Add Article</h2>
    <div class="card mt-3">
      <div class="card-body">
        <form [formGroup]="articleForm" (ngSubmit)="addArticle()">
          <div class="form-group">
            <label>Title</label>
            <input type="text" formControlName="title" [(ngModel)]="title" class="form-control"
                   [ngClass]="{ 'is-invalid': submitted && articleForm.controls.title.errors }"/>
            <div *ngIf="submitted && articleForm.controls.title.errors" class="text-danger">
              <div *ngIf="articleForm.controls.title.errors.required">Title is required</div>
              <div *ngIf="articleForm.controls.title.errors.minlength">At least 3 characters</div>
              <div *ngIf="articleForm.controls.title.errors.maxlength">Cannot exceed 10 characters</div>
            </div>
          </div>
          <div class="form-group">
            <label>Description</label>
            <input type="text" formControlName="description" [(ngModel)]="description" class="form-control"
                   [ngClass]="{ 'is-invalid': submitted && articleForm.controls.description.errors }"/>
            <div *ngIf="submitted && articleForm.controls.description.errors" class="text-danger">
              <div *ngIf="articleForm.controls.description.errors.required">Description is required</div>
            </div>
          </div>
          <div class="form-group">
            <button type="submit" class="btn btn-primary col-md-4" [disabled]="!title || !description">Add</button>
            <a [routerLink]="['/']">
              <button type="submit" class="btn btn-primary col-md-4 ml-1">Back</button>
            </a>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

我们需要为输入字段提供一个 [(ngModel)] :

[(ngModel)]="title"
[(ngModel)]="description"

然后在按钮上我们可以通过这种方式检查事件:

[disabled]="!title || !description"

它确实有效。

但是我将 formControlNamengModel 混合使用,不建议这样做。 所以我想知道,如何让它以 Reactive Form 的方式工作?

请照顾好自己。

【问题讨论】:

    标签: javascript angular angular-reactive-forms reactive-forms


    【解决方案1】:

    您可以删除 ngModel。

    如果表单无效,要禁用您的按钮,您应该这样做:

    <button type="submit"[disabled]="articleForm.invalid">Add</button>
    

    我假设您在 ts 文件中已经有代码,并且验证器已经到位。

    【讨论】:

    • 哦,确实..我正在寻找更复杂的东西来完成..非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2016-10-26
    • 2017-11-20
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2020-04-27
    相关资源
    最近更新 更多