当嵌套的formControls放置在单独的组件中时,如何访问angular的formarray的索引值?

当嵌套的formControls放置在单独的组件中时,如何访问angular的formarray的索引值?,angular,Angular,我按照网站链接上的教程制作了一个能够添加多个表单控件的反应式表单,效果很好。我按照教程中的指导将嵌套表单控件移动到单独的组件中,需要从父组件访问formarray的索引值。我希望这个索引值设置在一个FormConrol中,这里的默认值是我在plnkr中的代码, 我分开的日子和描述部分 import { Component, Input } from '@angular/core'; import { FormArray, Validators, FormGroup } from '@a

我按照网站链接上的教程制作了一个能够添加多个表单控件的反应式表单,效果很好。我按照教程中的指导将嵌套表单控件移动到单独的组件中,需要从父组件访问formarray的索引值。我希望这个索引值设置在一个FormConrol中,这里的默认值是我在plnkr中的代码,

我分开的日子和描述部分

import { Component, Input } from '@angular/core';
    import { FormArray, Validators, FormGroup } from '@angular/forms';    

    @Component({
        selector: 'day-and-daydescription',
        template: ` <div [formGroup]="formGroup">
                        <div class="form-group col-xs-4" >
                            <label for="text">Day</label>
                            <input  type="text" class="form-control" formControlName="day" [ngModel]="group.i + 1"  readonly>                    
                        </div>
                        <!--Day Description-->
                        <div class="form-group col-xs-4">
                            <label>Description</label>
                            <input  type="text" class="form-control" formControlName="description">
                        </div>  
                    <div>`
    })
    export class DayAndDescriptionComponent {
        @Input('group')
        public formGroup: FormGroup;
    }  
从'@angular/core'导入{Component,Input};
从'@angular/forms'导入{FormArray,Validators,FormGroup};
@组成部分({
选择器:“日和日描述”,
模板:`
白天
描述
`
})
导出类DayAndDescriptionComponent{
@输入('组')
公共formGroup:formGroup;
}  

请查看plunker中的完整代码。

正如您自己所注意到的,您可以从父级操作整个表单,无需尝试从子级访问索引。您在父窗体中执行的所有操作都将反映在子窗体中

关于错误:

表达式在选中后已更改

这是正常的,在开发模式下发生。摘录自:

简言之,在dev模式下,每一轮更改检测之后都会立即执行第二轮,以验证自第一轮结束后绑定没有更改,因为这表明更改是由更改检测本身引起的

导致这种情况的是子系统中的实际输入。您可以手动触发更改检测,此错误将消失。由于我们正在处理一个
@输入
,您可以在
ngOnChanges
中执行此操作:

constructor(private ref: ChangeDetectorRef) { }

ngOnChanges() {
  this.ref.detectChanges()
}

我从父组件传递了i值,它现在可以工作了,但它抱怨ExpressionChangedTerithasBeenCheckedError:Expression在检查后发生了更改。上一个值:“false”。当前值:“true”。plunker中的代码使用changeDetectorRef::)谢谢我的救星。你能把这个贴出来作为答案吗?当然可以,等一下:)