【发布时间】:2018-07-31 03:10:11
【问题描述】:
我找了很久,没有找到我想做的事。我想添加具有角度 5 和反应形式的动态键/值。
当我单击“添加参数”按钮时,会动态显示 2 个输入。一个用于键,另一个用于值。
当我提交表单时,我想得到这个:
{ 设置:{ 键1:值1, 键2:值2... } }
这是我所做的:
我的组件:
constructor(
protected fb: FormBuilder,
) {
// form init
this.testForm = fb.group({
'name': fb.control('', [Validators.required]),
'desc': fb.control('', [Validators.required]),
'config': fb.array([])
});
}
...
getControls(frmGrp: FormGroup, key: string) {
return (<FormArray>frmGrp.controls[key]).controls;
}
addConfigBlock() {
let settingBlock = this.testForm.get('setting') as FormArray;
settingBlock.push(this.fb.group({key: '', value: ''}));
}
模板.html
<div fxLayout="column" fxflex="100%" class="form-standard">
<div formArrayName="config" *ngFor="let setting of getControls(testForm, 'config'); let i = index;">
<div [formGroupName]="i" fxLayout="column" fxFlex="100%">
<mat-form-field class="form-input">
<input matInput formControlName="key" name="key" maxlength="255"
placeholder="Key" required>
</mat-form-field>
<mat-form-field class="form-input">
<input matInput formControlName="value" name="value" maxlength="255"
placeholder="Value" required>
</mat-form-field>
</div>
</div>
</div>
<mat-card-content class="mat-card-content">
<div fxLayout="row" fxLayoutAlign="start stretch" class="form-standard">
<div fxFlex.gt-md="100" fxFlex.xs="100">
<div fxLayoutAlign="space-around stretch">
<button type="button" mat-raised-button color="primary" (click)="addSetting()">Add setting</button>
</div>
</div>
</div>
</mat-card-content>
我不知道实现这一目标的最佳方法是什么。非常感谢:)
【问题讨论】:
标签: angular forms angular-reactive-forms