sac*_*rni 5 forms angular-rc5 angular
我正在将代码从角度beta迁移到RC5版本.我面临着使用的基于模型的表格的问题.因为我已经在角度2 beta中开发了很多形式.我很难将基于模型的表单更改为基于模板的表单.任何形式迁移的帮助都非常感谢.
我现有的代码是这样的
profile.ts
import {FORM_DIRECTIVES, REACTIVE_FORM_DIRECTIVES} from '@angular/forms';
import {FormBuilder, FormGroup, FormControl, Validators} from '@angular/forms';
this.firstName = new FormControl();
this.lastName = new FormControl();
this.email = new FormControl();
this.addressLine = new FormControl();
this.postal = new FormControl();
this.postalArea = new FormControl();
this.form = builder.group({
firstName: this.firstName,
lastName: this.lastName,
email: this.email,
addressLine: this.addressLine,
postal: this.postal,
postalArea: this.postalArea,
photo: this.photo
});
Run Code Online (Sandbox Code Playgroud)
和profile中的模板.HTML如下
<form class="form-default" [formGroup]="form">
<input type="text" class="form-control" id="firstName" [(ngModel)]="model.firstName" formControlName="firstName" maxlength="200">
<input type="text" class="form-control" id="lastName" [(ngModel)]="model.lastName" formControlName="lastName" maxlength="200">
<input type="text" class="form-control" id="email" [(ngModel)]="model.username" readonly formControlName="email" maxlength="100">
</form>
Run Code Online (Sandbox Code Playgroud)
我在控制台中遇到以下错误.
EXCEPTION:错误:未捕获(在承诺中):EXCEPTION:/assets/scripts/my-profile/my-profile.html:176:66中的错误原始异常:ngModel不能用于向父formGroup指令注册表单控件.请尝试使用formGroup的合作伙伴指令"formControlName".例:
Run Code Online (Sandbox Code Playgroud)<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>
Ara*_*kar -1
要在 html 中同时拥有ngModel和 ,formControl您必须在组件中拥有一个firstName从 html 绑定到的模型(例如在下面的示例中),并且您还需要构建一个包含所需的表单组formControl(例如firstNameControl在下面的示例中)
this.firstName: string;
this.form = builder.group({
firstNameControl: this.firstName,
});
Run Code Online (Sandbox Code Playgroud)
<form [formGroup]="form">
<input type="text" [(ngModel)]="firstName" [formControl]="form.controls.firstNameControl"></input>
</form
Run Code Online (Sandbox Code Playgroud)