Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular FormArray中具有属性名称的FormControl_Angular - Fatal编程技术网

Angular FormArray中具有属性名称的FormControl

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

我有一张formArray的表格

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}它将取决于控件类型。