我在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()">

当前回答

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

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

其他回答

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

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

像这样在ngmodel字段中添加standalone: true

 <mat-radio-group [(ngModel)]="gender" [ngModelOptions]="{standalone: true}">
                            <mat-radio-button value="Male">Male</mat-radio-button>    
                            <mat-radio-button value="Female">Female</mat-radio-button>  
                        </mat-radio-group>

我注意到,Chrome开发工具有时只在第一个元素上用醒目的红色下划线,即使它正确地设置了名称。这让我一时糊涂。

必须确保为表单中包含ngModel的每个元素添加一个名称,而不管哪个元素是带下划线的。

正如每个开发人员都有一个共同的习惯,不阅读完整的错误,只阅读第一行,然后开始从其他人那里寻找答案:):)我也是其中之一,这就是为什么我在这里:

阅读错误,清楚地说:

Example 1: <input [(ngModel)]="person.firstName" name="first">
Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">

我们还需要什么来理解这个错误呢?

使用任何一个选项,一切都会顺利进行。

试试这个…

<input type="text" class="form-control" name="name" placeholder="Name" required minlength="4" #name="ngModel" ngModel>
<div *ngIf="name.errors && (name.dirty || name.touched)">
    <div [hidden]="!name.errors.required" class="alert alert-danger form-alert">
        Please enter a name.
    </div>
    <div [hidden]="!name.errors.minlength" class="alert alert-danger form-alert">
        Enter name greater than 4 characters.
    </div>
</div>