未捕获的错误:模块'AppModule'声明了意外的模块'FormsModule'。请添加@ Pipe / @ Directive / @ Component批注


97

我是Angular的新手。我开始了“英雄之旅”以学习它。因此,我创建了一个app.component具有two-way绑定的对象。

import { Component } from '@angular/core';
export class Hero {
    id: number;
    name: string;
}
@Component({
    selector: 'app-root',
    template: `
        <h1>{{title}}</h1>
        <h2>{{hero.name}}  details!</h2>
        <div><label>id: </label>{{hero.id}}</div>
        <div><label>Name: </label>
            <input [(ngModel)]="hero.name" placeholder="Name">
        </div>
    `,
    styleUrls: ['./app.component.css']
})
export class AppComponent {
    title = 'Tour of Heroes';
    hero: Hero = {
        id: 1,
        name: 'Windstorm'
    };
}

在学习本教程之后,我导入了FormsModule并将其添加到声明数组中。错误出现在此步骤:

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

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

这是错误:

未捕获的错误:模块'AppModule'声明了意外的模块'FormsModule'。请添加@ Pipe / @ Directive / @ Component批注。


11
这是一个“模块”。它属于imports而不是declarations
Neil Lunn

Answers:


259

FormsModule应该在imports arraynot处添加declarations array

  • 进口阵列是用于导入模块,例如BrowserModuleFormsModuleHttpModule
  • 声明数组是你ComponentsPipesDirectives

请参考以下更改:

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

1
感谢您的回答和信息。它有帮助。
弗拉德·波托林

9

添加FormsModule导入数组。

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

或者,这可以在不使用进行[(ngModel)]

<input [value]='hero.name' (input)='hero.name=$event.target.value' placeholder="name">

代替

<input [(ngModel)]="hero.name" placeholder="Name">

4

声明:[]中删除FormsModule,并在导入中添加FormsModule:[]

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


那么,您的答案又补充了其他人尚未提供的内容?
Noctis

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.