Angular Ionic 4-角度为6的FormarAyname未按预期工作
正在尝试将Angular Ionic 4-角度为6的FormarAyname未按预期工作,angular,angular-reactive-forms,ionic4,Angular,Angular Reactive Forms,Ionic4,正在尝试将FormarAyname与一系列离子复选框一起使用 这是我的控制: this.planGroup = this.formBuilder.group({ ... PlanEmails: this.formBuilder.array([ this.formBuilder.group({ PlanId: '', EmailId: '' })
FormarAyname
与一系列离子复选框一起使用
这是我的控制:
this.planGroup = this.formBuilder.group({
...
PlanEmails: this.formBuilder.array([
this.formBuilder.group({
PlanId: '',
EmailId: ''
})
]),
});
这是我的HTML
<ion-row>
<ion-col formArrayName="PlanEmails" [sizeXs]="12" [sizeSm]="6" *ngFor="let email of emails">
<ion-item>
<ion-label>{{email.Title}}</ion-label>
<ion-checkbox formControlName="EmailId" color="secondary" [value]="email.Id" slot="start"></ion-checkbox>
</ion-item>
</ion-col>
</ion-row>
尝试将FormarAyname移动到离子行
和离子项
,但未成功。我不知道我做错了。尝试阅读Angular文档,但我似乎无法理解。FromGroup的示例很少。请遵循此URLFromGroup的示例很少。请遵循此URL,您应该定义EmailId控件的正确路径 您有
FormControl
s的FormArray
的FormGroup
s,但在模板中定义了FormArray
的FormControl
s
要修复它,您应该使用formGroupName
指令
<ion-col ... *ngFor="let email of emails; let i = index">
||
\/
add this
<ion-item [formGroupName]="i">
||
\/
and this
||
\/
加上这个
||
\/
还有这个
您应该定义EmailId控件的正确路径
您有FormControl
s的FormArray
的FormGroup
s,但在模板中定义了FormArray
的FormControl
s
要修复它,您应该使用formGroupName
指令
<ion-col ... *ngFor="let email of emails; let i = index">
||
\/
add this
<ion-item [formGroupName]="i">
||
\/
and this
||
\/
加上这个
||
\/
还有这个
现在我得到一个不同的错误错误:找不到路径为:'PlanEmails->1'的控件
和错误:找不到路径为:'PlanEmails->1->EmailId'的控件
这意味着您的FormArray
未与emails
数组同步。您应该有相同数量的元素执行此操作:const-emailsArray=new-FormArray([]);this.emails.forEach(email=>{emailsArray.controls.push(this.formBuilder.group({EmailId:[]}));})this.planGroup.addControl('PlanEmails',emailsArray')
错误现在消失了,但是当选中复选框时,表单组没有填充tryemailsArray.push
而不是emailsArray.controls.push
。此外,您还可以使用array.prototype.map
方法填充数组。现在,我遇到了另一个错误错误:无法通过路径找到控件:'PlanEmails->1'
和错误:无法通过路径找到控件:'PlanEmails->1->EmailId'
这意味着您的FormArray
未与同步电子邮件
数组。您应该有相同数量的元素执行此操作:const-emailsArray=new-FormArray([]);this.emails.forEach(email=>{emailsArray.controls.push(this.formBuilder.group({EmailId:[]}));})this.planGroup.addControl('PlanEmails',emailsArray')
错误现在消失了,但是当选中复选框时,表单组没有填充tryemailsArray.push
而不是emailsArray.controls.push
。您还可以使用array.prototype.map
方法填充数组