html - 使用 FormArrayName 的反应形式角度
问题描述
在我的表单中我需要添加电话,我已经看到在数据库中您正在使用我添加的电话号码保存一个字符串数组,但是从数据库返回的值设置为表单的那一刻,只有第一个数组值显示。
我想以字符串格式显示所有包含电话数量的数组值。
组件.html:
<div fxLayout="row" fxLayout.xs="column" fxLayoutAlign="start">
<div formArrayName="phones" fxFlex="30">
<div *ngFor="let phone of phones.controls; index as i">
<mat-form-field>
<input matInput [formControlName]="i" placeholder="Phone Number">
</mat-form-field>
</div>
</div>
<div fxFlex="30">
<button mat-raised-button class="blue" (click)="addPhone()">Add</button>
</div>
</div>
组件.ts:
this.myForm = this._formBuilder.group({
phones: new FormArray([new FormControl('')]),
});
this.values$
.pipe(takeUntil(this._unsubscribeAll))
.subscribe((values) => {
// values = {phones: ['999999', '88888', '77777']}
if (values) {
this.myForm.patchValue(values, { emitEvent: false });
}
});
get phones(): FormArray { return this.myForm.get('phones') as FormArray; }
addPhone(): void { this.phones.push(new FormControl('')); }
即使在数组中返回多个值也只会在我的表单上显示第一个数组值,我做错了什么?
解决方案
patchValue
不会为您创建任何表单控件,因此当您调用 patchValue 时,它只会设置表单数组中第一个表单控件的值,因为您只创建了一个。
You have to call addPhone
for each phone number or create form inside the describe when you already know how many form controls there should be, but you still need to create as many form controls as number of elements in your array.
this.myForm = this._formBuilder.group({
phones: new FormArray(),
});
this.values$
.pipe(takeUntil(this._unsubscribeAll))
.subscribe((values) => {
if (values && values.phones) {
phones.forEach(phone => this.addPhone(phone));
}
});
get phones(): FormArray { return this.myForm.get('phones') as FormArray; }
addPhone(phone = ''): void { this.phones.push(new FormControl(phone)); }
推荐阅读
- swift - Swift Combine 创建自定义主题
- vba - 多个用户表单中使用的变量的变量范围
- excel - 使用动态 lookup_value 执行 vlookup
- r - (R 中的 tmap 包)过滤 tm_text 中的值
- google-cloud-platform - Google GCP 计算实例不需要重启/嵌套虚拟化
- javascript - 使用循环更改 DOM 元素的类
- vba - 带有 If-else 条件的一行 VBA 语句表达式
- html - 输入类型日期。如何不让这种类型的 2 个输入相同
- javascript - 10(或更多)秒后自动提交(点击)表格
- postgresql - 如何使用 postgresql 授予特定表的权限