gpt4 book ai didi

javascript - 使用 Angular 4 Form Group 编辑和添加新数据

转载 作者:行者123 更新时间:2023-11-30 14:46:04 25 4
gpt4 key购买 nike

我正在努力思考使用 Angular 4 FormGroup 和 FormBuilder 的最佳方式。我有一些我现在正在使用的虚拟 json 数据,例如:

bins = [ 
{
id: '101-Test',
system: 'test-system',
shape: 'round'
},
id: '102-Test',
system: 'test-system',
shape: 'round'
]

我打算做的是拥有一个 UI,该 UI 将显示可以编辑的“bins”行,还可以添加新的 bin。所以 html/ngFor/ngIf 的 看起来像这样:

<div id="bins">
<div class=bin-card new" *ngIf="addBinCardVisible">
<form [formGroup]="binSetupForm">
<label>Bin # <input type="text" formControlName="id"></label>
<label>Bin # <input type="text" formControlName="system"></label>
<label>Bin # <input type="text" formControlName="shape"></label>
</form>
</div>
<div class="bin-card-wrap" *ngFor="let bin of bins; let i = index">
<form [formGroup]="binSetupForm">
<label>Bin # <input type="text" formControlName="id"></label>
<label>Bin # <input type="text" formControlName="system"></label>
<label>Bin # <input type="text" formControlName="shape"></label>
</form>
</div>
</div>

然后在我的 typescript 中,我会有类似以下内容的内容:

export class BinSetupComponent implements OnInit {

addBinCardVisible = false;

binSetupForm: FormGroup;

constructor(private formBuilder: FormBuilder) { }

ngOnInit() {
this.buildForm();
}

buildForm(): void {
this.binSetupForm = this.formBuilder.group({
id: '',
system: '',
shape: ''
});
}

addNewBin() {
this.bins.splice(0, 0, this.binSetupForm.value);
this.addBinCardVisible = false;
this.binSetupForm.reset();
}
}

如您所见,我正在使用 Angular Form Builder 来构建 binSetupForm 的值,然后将新的表单值推送到我的虚拟数据数组中。我还如何使用此表单组/控件来设置 *ngFor 中编辑表单的值。我应该以某种方式从 Angular 实现 patchValue 吗?如果是,如何实现?缺少有关如何将这些表单控件用于此表单的所有实例的链接。非常感谢任何帮助。

最佳答案

您希望使用的是 FormArray,您将像这样设置您的表单

this.binsForm = new FormGroup({
bins: new FormArray([
new FormGroup({
id: new FormControl('101-Test'),
system: new FormControl('test-system'),
shape: new FormControl('round')
}),
new FormGroup({
id: new FormControl('102-Test'),
system: new FormControl('test-system'),
shape: new FormControl('round')
})
]
});

在你的 *.component.html 文件中

<div [formGroup]="binsForm">
<div formArrayName="bins">
<div *ngFor="let bin of bins; let i = index">
<div [formGroupName]="i">
<input type="text" formControlName="id" />
<input type="text" formControlName="system" />
<input type="text" formControlName="shape" />
</div>
</div>
</div>
</div>

这里是一个链接 full example setup

关于javascript - 使用 Angular 4 Form Group 编辑和添加新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com