html - Angular 9,如何使用动态输入字段从列表或数组中获取信息?
问题描述
我需要将所有字符串包含在作为 Atm 对象属性的 Assignes 数组中,并将它们放入所有动态输入中,每个字符串都有一个更新或删除的机会。我该如何使用 FormArray?
atm: Atm; //has an array of string as property
get Assignes() {
return this.virtualForm.get('Assignes') as FormArray;
}
addAssigne() {
this.Assignes.push(this.formBuilder.group({ point: '' }));
}
deleteAssigne(index) {
this.Assignes.removeAt(index);
}
buildForm() {
this.form = new FormGroup({
model: new FormControl(this.atm.Model , Validators.required),
vendor: new FormControl(this.atm.Vendor , Validators.required),
Assignes : this.formBuilder.array([this.formBuilder.group({point : ''})]),
}
<div formArrayName="Assignes">
<div *ngFor="let item of Assignes.controls; let pointIndex=index" [formGroupName]="pointIndex">
<mat-form-field appearance="outline">
<mat-label>Assigne</mat-label>
<input matInput formControlName="point" [readonly]=!isAdmin placeholder="Assigne"/>
</mat-form-field>
<button color="primary" *ngIf="isAdmin" mat-raised-button (click)="deleteAssigne(pointIndex)">Delete assigne</button>
</div>
<button color="primary" *ngIf="isAdmin" mat-raised-button (click)="addAssigne()">Add assigne</button>
</div>
解决方案
即使不使用 formArray,您也可以简单地做到这一点。您只需要在数组上运行 for 循环并呈现动态输入字段。
代码应如下所示:
<div *ngFor="let item of atm; let pointIndex=index" >
<mat-form-field appearance="outline">
<mat-label>Assigne</mat-label>
<input matInput name="assigne{{i}}" [(ngModel)]="item" placeholder="Assigne"/>
</mat-form-field>
<button color="primary" *ngIf="isAdmin" mat-raised-button (click)="deleteAssigne(pointIndex)">Delete assigne</button>
</div>
<button color="primary" *ngIf="isAdmin" mat-raised-button (click)="addAssigne()">Add assigne</button>
.ts 文件应通过以下方式更新:
atm: Atm; //has an array of string as property
addAssigne() {
this.atm.push('');
}
deleteAssigne(index) {
this.atm.splice(index,1);
}
推荐阅读
- javascript - javascript - 如何在查看文档时检测用户正在使用什么浏览器?
- reactjs - 可以在按钮反应中的onClick中调用异步函数吗
- python - Python的数字字典
- reactjs - React 默认值不显示在输入字段中
- laravel - 我使用开放服务器,当我使用 jquery 时,显示错误 500(内部服务器错误)。如何解决?
- r - 如何在 ggplot cumsum plot 的 x 轴上显示刻度标签
- postgresql - 带有 Hikari 的 Spring JPA 未释放连接
- android - 当存在异常对象时解析 json 列表以及使用 Retrofit2
- javascript - while循环测试用例错误
- oracle - 如何解决 oracle apex 中的会话交换或会话过期问题