Angular FormArray中具有属性名称的FormControl
我有一张formArray的表格Angular FormArray中具有属性名称的FormControl,angular,Angular,我有一张formArray的表格 let myForm=formBuilder.group({ "firstName":[], "subjects":formBuilder.array([]) }) //要添加新控件,请执行以下操作:- (<FormArray>self.myForm.controls['subjects']).push(new FormControl()); (self.myForm.controls['subjects']).push(newfor
let myForm=formBuilder.group({
"firstName":[],
"subjects":formBuilder.array([])
})
//要添加新控件,请执行以下操作:-
(<FormArray>self.myForm.controls['subjects']).push(new FormControl());
(self.myForm.controls['subjects']).push(newformcontrol());
//对于呈现形式:-
<div *ngFor="let control in myForm.controls['subjects'].controls;let i=index">
<input formControlName="{{i}}"
<div>
表单的值类似于使用表单组、表单阵列和表单控件创建的对象结构。因此,如果您希望主题成为对象,则必须确保将“主题”绑定到表单组,然后为该“主题”表单组的每个属性设置表单控件
例如,如果你想让你的主题看起来像:{a:'some value',b:'some other value}
,那么:
<div *ngFor="let control in myForm.controls['subjects'].controls;let i=index">
<div [formGroup]="control">
<input formControlName="a" />
<input formControlName="b"
</div>
<div>
然后是您的模板,
subjectFields = [
{ prop1: 'math', prop2: 'science' },
{ prop1: 'bio', prop2: 'chem' },
....
]
<div *ngFor="let control in myForm.controls['subjects'].controls;let i=index">
<div [formGroup]="control">
<input [formControlName]="subjectFields[i].prop1" />
<input formControlName="subjectFields[i].prop1" />
......
</div>
<div>
......
你的第一个主题是{math:'input val',science:'input val 2'}
,第二个主题是{bio:'input val',chem:'input val'}
等等。表单的值类似于你用表单组、表单数组和表单控件创建的对象结构。因此,如果您希望主题成为对象,则必须确保将“主题”绑定到表单组,然后为该“主题”表单组的每个属性设置表单控件
例如,如果你想让你的主题看起来像:{a:'some value',b:'some other value}
,那么:
<div *ngFor="let control in myForm.controls['subjects'].controls;let i=index">
<div [formGroup]="control">
<input formControlName="a" />
<input formControlName="b"
</div>
<div>
然后是您的模板,
subjectFields = [
{ prop1: 'math', prop2: 'science' },
{ prop1: 'bio', prop2: 'chem' },
....
]
<div *ngFor="let control in myForm.controls['subjects'].controls;let i=index">
<div [formGroup]="control">
<input [formControlName]="subjectFields[i].prop1" />
<input formControlName="subjectFields[i].prop1" />
......
</div>
<div>
......
最后你的第一个主题是{math:'input val',science:'input val 2'}
,第二个主题是{bio:'input val',chem:'input val'}
等等。如果我们定义了对象属性,这就行了。在我的例子中,主题可以是任何东西。例如{“math”:2,“science”:4}或{“physics”:5,“computer 6}它将取决于控件类型。如果我们定义了对象属性,这将起作用。在我的例子中,主题可以是任何东西。例如{“数学”:2,“科学”:4}或{“物理”:5,“计算机”:6}它将取决于控件类型。