Angular FormGroup-valuesChanges不接收下一个值

时间:2019-01-31 16:52:54

标签: angular

我迷路了,想了解如何处理FormGroup

基本上,我建立了一个FormGroup

this.formGroup = this.formBuilder.group({
   action: this.formBuilder.group({
      name: '',
      properties: this.formBuilder.array(...)
   })
})

properties FormArray的每个元素都是使用以下方式创建的:

this.formBuilder.group({
    key: ['...', Validators.required],
    value: ['...', Validators.required]
})

然后,内部FormGroup action作为Input传递给Component

<my-component>
   [formGroup]="formGroup.controls.action"
</my-component>

MyComponent内部,将action.properties的{​​{1}} FormArray转换为FormControl的列表,重新使用已经创建的控件。

const defaultFormProperties = {}

const formProperties = this.formGroup.controls.properties as FormArray
formProperties.controls.forEach(control => { 
   defaultFormProperties[control.value.key] = control.controls.value // I'm reusing the FormControl
})

this.defaultPropertiesGroup = this.formBuilder.group(defaultFormProperties)

但是,当这些重用的FormControl的值更改时,不会通知初始的FormGroup。这是预期的行为吗?

我假设FormControl(一个或多个)在包含在新的FormGroup中时更改了父对象,对吗?

编辑:我猜对了。做

Object.values(this.defaultPropertiesGroup.controls)
      .forEach(control => control.setParent(this.formGroup))

修复了valuesChanges通知。

0 个答案:

没有答案