我的组件中有一个简单的输入,它使用[(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)中,则需要在根模块中导入FormsModule

请打开app.module.ts

从@angular/forms导入FormsModule

Ex:

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

and

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

其他回答

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

步骤如下,

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

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

并将FormsModule添加到导入

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

图1.0(app.module.ts文件)

是的,就是这样。在app.module.ts文件中,我刚刚添加了:

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

[...]

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

有时,即使我们已经导入了BrowserModule、FormsModule和其他相关模块,我们仍然可能会收到相同的错误。

然后我意识到我们需要按顺序导入它们,这在我的案例中是缺失的。因此,顺序应该类似于BrowserModule、FormsModule和ReactiveFormsModul。

根据我的理解,功能模块应该遵循Angular的基本模块。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule
  ],
  providers: [],
  declarations: [
    AppComponent
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

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

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

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

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

确保[(ngModel)]实际拼写为“ngModel”,大写为M。我花了几分钟没看到这个