【问题标题】:Error :If ngModel is used within a form tag, either name attribute must be set or the form. control must be defined as 'standalone' in ngModelOptions错误:如果在表单标签中使用 ngModel,则必须设置名称属性或表单。控制必须在 ngModelOptions 中定义为“独立”
【发布时间】:2019-05-24 12:05:49
【问题描述】:
<form #employeeForm="ngForm">
  <div class="form-group">
    <label for="dept21">Department2</label><br>
    <select 
      id="dept21" 
      name="dept21" 
      [(ngModel)]="dept21" 
      class="form-control">
      <option 
        *ngFor="let d of dept2" 
        [value]="d?.id">
        {{d.name}}
      </option>
    </select>
  </div>
</form>

我添加了名称属性。仍然收到错误。

【问题讨论】:

  • 尝试中断当前的服务应用并再次运行ng serve
  • 清除缓存后重启应用,npm cache clean -f
  • 两个命令都试过了。 中仍然出现相同的错误

标签: angular


【解决方案1】:

为了解决这个问题,我只是在给定的 HTML 元素中添加了 name 属性。 例如:我在添加后遇到了这个错误:

<select id="inputLocationType" class="form-control custom-select" title={{tooltipMsg}} [(ngModel)]="locationType"  (change)="changeLocationType($event)">

然后我添加了name属性

<select id="inputLocationType" class="form-control custom-select" title={{tooltipMsg}} [(ngModel)]="locationType" name="location-type" (change)="changeLocationType($event)">

成功了

【讨论】:

    【解决方案2】:

    清除缓存并尝试重新启动您的应用。即使这样做,它也无法解决您的问题,那么您只需在您的选择标签中添加 [ngModelOptions]="{standalone: true}" 即可解决你的问题。

    【讨论】:

      【解决方案3】:

      您的代码在我看来非常好。

      尝试按Ctrl + C(在 Windows 上)或 Cmd + C(在 Mac 上)来中断当前服务的应用程序。

      然后再次运行ng serve

      这应该可以解决它。

      【讨论】:

      • 仍然出现同样的错误。
      • 奇怪。看起来您在 OP 中没有添加的表单中有更多字段。您是否可以使用StackBlitz 创建MCVE
      • 说得对。其他一些 div 标签中缺少 name 属性。但是开发工具在这个 div 中显示错误。
      猜你喜欢
      • 1970-01-01
      • 2017-01-11
      • 2018-10-05
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 2018-04-14
      • 2019-03-17
      • 1970-01-01
      相关资源
      最近更新 更多