如标题所述,formGroupName值更改不会更新表单。
(点击按钮后,输入中显示的值保持不变)
这是一个plunker

@Component({
  selector: 'my-app',
  template: `
   <form [formGroup]="myForm">
    <div [formGroupName]="fgn">
        <input [formControlName]="'name'">
    </div>
</form>

<button (click)="formChange()" >Change</button>

{{fgn}}
<br>
{{myForm.value | json}}
  `,
})
export class App {

    private myForm: FormGroup;
    private fgn: String;

    ngOnInit() {
        this.fgn = 'zero';

        this.myForm = this.formBuilder.group({
            zero: this.formBuilder.group({
                name: 'Zero'
            }),
            one: this.formBuilder.group({
                name: 'One'
            })
        });
    }

    formChange() {
        this.fgn = 'one';
    }

    constructor(private formBuilder: FormBuilder) {

    }
}

最佳答案

不知道为什么它不适用于formControlName方法。
不过,这似乎奏效了:

<input [formControl]="myForm.controls[fgn].controls['name']">

更新:
您可以将此解决方案用于AOT:
<input [formControl]="myForm.get(fgn + '.name')" />

(这被认为是一种解决方法,因为它太频繁地调用get方法)

10-05 23:27