【问题标题】:model based forms in angular 2 rc5 not workingangular 2 rc5中基于模型的表格不起作用
【发布时间】:2017-01-09 07:10:04
【问题描述】:

我正在将代码从 angular beta 迁移到 RC5 版本。 我面临使用基于模型的表单的问题。 因为我已经在 Angular 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
        });

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>

我在控制台中遇到以下错误。

异常:错误:未捕获(承诺中):异常:错误 /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>

【问题讨论】:

  • 仍然没有人能够回答这个问题。真奇怪!!

标签: forms angular angular-rc5


【解决方案1】:

要在你的 html 中同时拥有 ngModelformControl,你必须在你的组件中有一个模型(例如,在下面的例子中是 firstName),你需要从你的 html 中绑定到它,你还需要构建一个包含您想要的formControl 的表单组(例如以下示例中的firstNameControl

组件:

 this.firstName: string;
 this.form = builder.group({
            firstNameControl: this.firstName,                
        });

html

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

【讨论】:

  • 要使用 ngModel 并在 html 上使用 formControl,您必须在组件中有一个模型(例如 firstName),然后在 ngModel 中绑定到它,我这里的示例对我有用。
  • 好的,所以你的意思是顺序很重要。您能否通过强调它来改写您的答案。因为很难辨认。
【解决方案2】:

在这里你可以找到answer to the same problem 只需添加:

[ngModelOptions]="{standalone: true}"

【讨论】:

    猜你喜欢
    • 2017-01-19
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多