Я пытаюсь вставить FormGroup (myGroup) в FormArray (myArray), в котором уже есть группа FormGroups.После нажатия myGroup я регистрирую myArray.value, который тогда состоит только из значения myGroups.НО: myArray.controls по-прежнему содержит все остальные группы formGroups.
Кто-нибудь сталкивался с таким поведением или знает, почему это происходит?Уже искали в Интернете, но не смогли найти ничего связанного.
// at this point the array contains n values and n controls
console.log(this.myArray.value)
// then I push the new group (result comes from input data of the user)
const myGroup = this.myService.createGroup(result);
(<FormArray>this.myArray).push(<FormGroup>myGroup);
// at this point the array contains only one value, but still n controls
console.log(this.myArray.value);
myService:
createGroup(result: Result) {
return this.fb.group({
id: this.fb.control(result.id),
name: this.fb.control(result.name)
});
}
Есть несколько вещей, которые могут быть уместны здесь:
- Если я обновляю одну из существующих форм FormGroup в myArray с patchValue, она ведет себя как обычно, все работает нормально.
- Первоначально я динамически заполняю myArray, используя тот же метод, который я использую позже при нажатии myGroup (createGroup()), которая также работает как ожидалось.
- Форма вложенная.Моя текущая структура: myForm -> содержит myParentArray -> содержит myParentGroup -> содержит myArray.
- Я изначально создаю всю форму в родительском компоненте с помощью службы, которая возвращает, например,.FormGroups, как myGroup.Затем я передаю FormGroups и FormArrays через @Input () для вложенных компонентов.Но это, по моему мнению, не должно иметь значения.
Я уже пытался обновить значение с помощью .updateValueAndValidity (), но это не работает.
Может быть, есть какие-тоспособ заставить FormArrays обновлять свое значение на основе элементов управления?