【发布时间】:2017-02-21 09:48:12
【问题描述】:
我正在尝试让 Angular 2 和 Material 2 与 FormGroup 和 <md-radio> 组件一起工作。但是,当我像使用标准 <md-input> 那样连接它时,如果抛出错误。例如
component.html
<form [formGroup]="myFormGroup (ngSubmit)="doSomething()">
<md-input #birthday formControlName="birthday" placeholder="Birthday"></md-input>
<md-radio-group formControlName="gender" align="end">
<md-radio-button value="m">Male</md-radio-button>
<md-radio-button value="f">Female</md-radio-button>
</md-radio-group>
</form>
component.ts
export class Component {
myFormGroup: FormGroup;
constructor(formBuilder: FormBuilder) {
this.myFormGroup = formBuilder.group({
birthday: [this.myModel.birthday, Validators.required],
gender: [this.myModel.gender, Validators.required]
});
}
}
这给我的错误信息是:
ngModel 不能用于向父级注册表单控件 formGroup 指令。尝试使用 formGroup 的合作伙伴指令“formControlName”。示例:
<div [formGroup]="myGroup"> <input formControlName="firstName"> </div> In your class: this.myGroup = new FormGroup({ firstName: new FormControl() }); Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions: Example: <div [formGroup]="myGroup"> <input formControlName="firstName"> <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}"> </div>
即使我将表单组更改为:
this.myFormGroup = formBuilder.group({
birthday: [this.myModel.birthday, Validators.required],
gender: new FormControl()
});
我仍然收到同样的错误。
如何在 Angular 2 中将材质 2 <md-radio> 组件与 FormGroup 一起使用?任何帮助,将不胜感激。
非常感谢。
JT
【问题讨论】:
-
你实际上是在混合两种不同的方法,看看这个 YouTube 视频,来自 Angular Material 团队的 Kara Erickson 解释了所有关于表单 youtu.be/xYv9lsrV0s4... 话虽这么说,我'我遇到了类似的问题,@dries247 的回答并没有为我解决。