angular - 如何在angular8中对表单数组中的空字段应用验证
问题描述
我有一个表单数组。即使它是空的,它也会推送数据。我希望它仅在填充数据时推送表单数组数据,否则不推送它。我怎样才能做到这一点?
我的 component.html 代码
<form [formGroup]="addContainerForm"
(ngSubmit)="addAnalyticsSubmit(addContainerForm.value)">
<div id="vol" class="container tab-pane fade">
<div class="addButton">
<button (click)="addVolume()" class="a-btns btn btn-
success tab-btn">
<span><i class="fa fa-plus" aria-hidden="true"></i>
</span> Map
Additional Volume
</button>
</div>
<div formArrayName="Volumes" class="form_array" *ngFor="
let a of addContainerForm.get('Volumes')
['controls'];
let volumeChildForm = index
">
<div [formGroupName]="volumeChildForm">
<div class="form-group row">
<label class="col-sm-2 col-form-
label">Host</label>
<div class="col-sm-10 txt-box">
<input type="text" formControlName="Host"
class="form-control"
placeholder="Enter Host Name" />
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-
label">Container</label>
<div class="col-sm-9 txt-box">
<input type="text" formControlName="Container"
class="form-control"
placeholder="Enter Container Name" />
</div>
<div class="col-md-1">
<button type="button" class="a-btns btn btn-
success tab-btn"
(click)="deleteVolume(volumeChildForm)">
<i class="fa fa-trash" aria-
hidden="true">delete</i>
</button>
</div>
</div>
</div>
</div>
</div>
<button class="a-btns btn btn-success tab-btn"
type="submit">
Submit
</button>
</form>
我的 component.ts 文件*
ngOnInit(): void { this.addContainerForm = this.formbuilder.group({ Volumes: this.formbuilder.array([], [Validators.required]) }) } addVolume() { const arr = this.addContainerForm.controls.Volumes as FormArray; arr.push( this.formbuilder.group({ Host: [""], Container: [""], }) ); } deleteVolume(index) { const arr1 = this.addContainerForm.controls.Volumes as FormArray; arr1.removeAt(index); } ngSubmit(v){ console.log(v) }
这是我的工作 stackblitz 演示 https://stackblitz.com/edit/angular-zmbu5t?file=src%2Fapp%2Fapp.component.ts
解决方案
只添加这个
arr.push(
this.formbuilder.group({
Host: ["", [Validators.required]],
Container: ["", [Validators.required]],
})
& 去掉它
arr.push(
this.formbuilder.group({
Host: [""],
Container: [""],
})
);
这是工作。
推荐阅读
- laravel-5 - Laravel 代客无法安装
- java - 如何将 sharedpref.getstringset 的每个值添加到数组列表中?
- listview - 颤振从地图列表中删除项目只读错误
- javascript - 如何反弹一个点以击中某个角度的线
- animation - SwiftUI - 滚动上的隐藏/折叠部分
- php - 如何修复 docker 应用程序中由“JFactory::getApplication('site')”引起的“应用程序实例化错误”?
- python - 使用抽象类的 Pythonic 方式
- javascript - 使用 Node JS utility.promisify() 调用不会从异步回调方法中返回
- python - 如何使 Matplotlib 鼠标交互图不那么滞后?
- apache-kafka - 在同一组 id 上添加消费者时,Kafka 消费者的阅读率似乎会降低