我在Angular 2中得到了这个错误

core.umd.js:5995 EXCEPTION: Uncaught (in promise): Error: Error in app/model_exposure_currencies/model_exposure_currencies.component.html:57:18 如果ngModel在一个form标签中被使用,则name . ngModel在一个form标签中被使用 属性必须设置或窗体 控件必须在ngModelOptions中定义为'standalone'。

示例1:

<input [(ngModel)]="person.firstName" name="first">

示例2:

<input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}"> 
<td *ngFor="let lag of ce.lags">
    <div class="form-group1">
        <input name="name" [(ngModel)]="lag.name" [ngModelOptions]="{standalone: true}"  class="form-control" pattern="[0-9]*(\.[0-9]+)?" required>
    </div>
</td>

这是我如何使用表单标签:

<form #f="ngForm" (ngSubmit)="onSubmit()">

当前回答

<select name="country" formControlName="country" id="country" 
       class="formcontrol form-control-element" [(ngModel)]="country">
   <option value="90">Turkey</option>
   <option value="1">USA</option>
   <option value="30">Greece</option>
</select>
name="country"
formControlName="country" 
[(ngModel)]="country" 

这是在formGroup指令中使用ngModel需要的三样东西。

注意,应该使用相同的名称。

其他回答

这两个属性都是必需的,并且还要重新检查所有具有“name”属性的表单元素。如果你使用表单提交概念,其他明智的只是使用div标签而不是表单元素。

<input [(ngModel)]="firstname" name="something">

对我来说,解决办法很简单。我将<form>标签更改为<div>,错误就消失了。

<select name="country" formControlName="country" id="country" 
       class="formcontrol form-control-element" [(ngModel)]="country">
   <option value="90">Turkey</option>
   <option value="1">USA</option>
   <option value="30">Greece</option>
</select>
name="country"
formControlName="country" 
[(ngModel)]="country" 

这是在formGroup指令中使用ngModel需要的三样东西。

注意,应该使用相同的名称。

对于那些对错误消息本身不惊慌的人来说,只是谷歌一下为什么这里的例子不起作用(即当文本输入到输入字段时,动态过滤不会发生):它不会起作用,直到你在输入字段中添加name参数。没有任何东西可以解释为什么管道不能工作,但是错误消息指向这个主题,并根据接受的答案修复它使动态过滤器能够工作。

您没有提到您正在使用的版本,但如果您正在使用rc5或rc6,那么“旧”样式的表单已经被弃用了。看一下关于“新”表单技术的指导:https://angular.io/docs/ts/latest/guide/forms.html