如标题所述,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
方法)