【发布时间】: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"
它确实有效。
但是我将 formControlName 和 ngModel 混合使用,不建议这样做。 所以我想知道,如何让它以 Reactive Form 的方式工作?
请照顾好自己。
【问题讨论】:
标签: javascript angular angular-reactive-forms reactive-forms