キャッチされないエラー:予期しないモジュール 'FormsModule'がモジュール 'AppModule'によって宣言されました。@ 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 { }

ここにエラーがあります:

キャッチされないエラー:予期しないモジュール 'FormsModule'がモジュール 'AppModule'によって宣言されました。@ Pipe / @ Directive / @ Componentアノテーションを追加してください。


11
それは「モジュール」です。所属するものimportsとそうでないものdeclarations
Neil Lunn 2017

回答:


259

FormsModule追加しimports arrayないでくださいdeclarations array

  • 輸入配列のようなモジュールをインポートするためのものですBrowserModuleFormsModuleHttpModule
  • 宣言配列はあなたのためですComponentsPipesDirectives

以下の変更を参照してください:

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

1
回答と情報をありがとう。それは役に立ちました。
Vlad Poltorin 2017

9

FormsModuleImports配列に追加します。
すなわち

@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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.