角度为2 rc5的基于模型的形式不起作用

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".例:

<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>
Run Code Online (Sandbox Code Playgroud)

Ave*_*kaj 5

在这里你可以找到同样问题答案,只需添加:

[ngModelOptions]="{standalone: true}"
Run Code Online (Sandbox Code Playgroud)


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)

html

<form [formGroup]="form">    
<input type="text" [(ngModel)]="firstName" [formControl]="form.controls.firstNameControl"></input>
</form
Run Code Online (Sandbox Code Playgroud)