我的组件中有一个简单的输入,它使用[(ngModel)]:

<input type="text" [(ngModel)]="test" placeholder="foo" />

当我启动应用程序时,即使没有显示组件,也会出现以下错误。

zone.js:461未处理的Promise拒绝:模板解析错误:无法绑定到“ngModel”,因为它不是“input”的已知属性。

以下是组件。ts:

import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { Intervention } from '../../model/intervention';

@Component({
   selector: 'intervention-details',
   templateUrl: 'app/intervention/details/intervention.details.html',
   styleUrls: ['app/intervention/details/intervention.details.css']
})
    
export class InterventionDetails
{
   @Input() intervention: Intervention;
    
   public test : string = "toto";
}

当前回答

要解决此问题,我们必须在app.module.ts文件中包含FormModule,以避免无法绑定到ngModel,因为它不是Angular应用程序中输入问题的已知属性。

步骤如下,

打开app.module.ts并添加导入行

import { FormsModule } from '@angular/forms';

并将FormsModule添加到导入

@NgModule({
    imports: [
       FormsModule
    ],
})

图1.0(app.module.ts文件)

其他回答

为了能够对表单输入使用双向数据绑定,您需要在Angular模块中导入FormsModule包。

有关更多信息,请参阅此处的Angular 2官方教程和表单的官方文档。

即使如上所述添加了FormsModule,我也会遇到同样的错误。因此,只需要简单的重新启动即可完成任务。

确保采用模板驱动的表单方法(https://angular.io/guide/forms),正如@Nikita Sychou已经提到的,您已经用“name”属性修饰了输入字段,例如

<form>
   <input [(ngModel)]="form.email" name="email"></input>

并且FormsModule已导入关联的@NgModule中。这两者都是避免“无法绑定到ngModel”错误的前提条件。如果IDE中仍然存在样式错误,例如IntelliJ抱怨ngModel指令,请忽略它们。。你很好去:-)

我在运行Angular测试时遇到了同样的错误,因为规范文件中没有添加FormsModule。

我们需要将其添加到所有规范文件中,而为了使应用程序成功运行,我们将在app.module.ts文件中的一个位置添加它。

在Angular中使用双向绑定之前,需要将FormsModule包导入到模块中。

通过将FormsModule添加到模块内的imports数组(例如app.module.ts),可以这样做。

import { FormsModule } from '@angular/forms';

@NgModule({
  imports: [
    ...,
    FormsModule     <-------
  ],
  [...]
})