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

时间:2017-07-11 10:32:58

标签: angular

我是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注释。

4 个答案:

答案 0 :(得分:158)

应在FormsModule而不是imports array添加

declarations array

  • 导入数组用于导入BrowserModuleFormsModuleHttpModule
  • 等模块
  • 声明数组适用于您的ComponentsPipesDirectives

请参阅以下更改:

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

答案 1 :(得分:6)

在Imports Array中添加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">

答案 2 :(得分:0)

声明中删除 FormsModule 并添加 FormsModule 进口中:[]

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

答案 3 :(得分:-1)

您可以添加到declarations: [] in modules

的内容
  • 管道
  • 指令
  • 组件

专业提示:错误消息对此进行了解释-Please add a @Pipe/@Directive/@Component annotation.