Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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 Ionic 4-角度为6的FormarAyname未按预期工作_Angular_Angular Reactive Forms_Ionic4 - Fatal编程技术网

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的示例很少。请遵循此URL

FromGroup的示例很少。请遵循此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')
错误现在消失了,但是当选中复选框时,表单组没有填充try
emailsArray.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')
错误现在消失了,但是当选中复选框时,表单组没有填充try
emailsArray.push
而不是
emailsArray.controls.push
。您还可以使用
array.prototype.map
方法填充数组