我使用的是Angular 4,我在控制台得到了一个错误:

不能绑定到ngModel,因为它不是input的已知属性

我该如何解决这个问题?


当前回答

在app.module.ts中添加以下内容:

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

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

其他回答

在你的NgModule导入中添加FormsModule(因此ngModel是FormsModule的一部分)。

注意,它可以是AppModule,也可以是通过惰性加载加载的特性模块。

imports: [
   ...,
   FormsModule,
   ...
]

在我的例子中,我添加了缺失的导入,即ReactiveFormsModule。

在我的例子中,在我的应用程序的惰性加载转换期间,我在app-routing.module.ts中错误地导入了RoutingModule而不是ComponentModule

如果双向绑定不起作用,您应该验证以下内容。

在html中ngModel应该这样调用。不依赖于输入元素的其他属性

<输入[(ngModel)] = >“inputText

确保FormsModule被导入到模块文件app.modules.ts中

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

@NgModule({
    declarations: [
        AppComponent,
        HomeComponent // suppose, this is the component in which you are trying to use two ay binding
    ],
    imports: [
        BrowserModule,
        FormsModule,
        // other modules
],
    providers: [],
    bootstrap: [AppComponent]
})
export class AppModule { }

方法的声明中添加了你试图使用ngModel进行双向绑定的组件。在前面第2点中添加的代码

这就是使用ngModel使双向绑定工作所需做的所有事情,这在angular 9中都得到了验证

我在用Karma/Jasmine测试Angular 6应用时遇到了这个错误。我已经在顶层模块中导入了FormsModule。但是当我添加一个使用[(ngModel)]的新组件时,我的测试开始失败。在这种情况下,我需要在我的TestBed TestingModule中导入FormsModule。

beforeEach(async(() => {
  TestBed.configureTestingModule({
    imports: [
      FormsModule
    ],
    declarations: [
      RegisterComponent
    ]
  })
  .compileComponents();
}));