Nicht erfasster Fehler: Unerwartetes Modul 'FormsModule', deklariert vom Modul 'AppModule'. Bitte fügen Sie eine @ Pipe / @ Directive / @ Component-Anmerkung hinzu

97

Ich bin neu in Angular. Ich habe Tour of Heroes gestartet, um es zu lernen. Also bin ich ein app.componentmit two-wayBindung erstellt.

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'
    };
}

Nach dem Tutorial habe ich FormsModule importiert und in das Deklarationsarray eingefügt. Bei diesem Schritt ist ein Fehler aufgetreten:

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 { }

Hier ist ein Fehler:

Nicht erfasster Fehler: Unerwartetes Modul 'FormsModule', deklariert vom Modul 'AppModule'. Bitte fügen Sie eine @ Pipe / @ Directive / @ Component-Anmerkung hinzu.

Vlad Poltorin
quelle
11
Es ist ein "Modul". Es gehört in importsund nichtdeclarations
Neil Lunn

Antworten:

258

FormsModulesollte bei imports arraynicht hinzugefügt werden declarations array.

  • Einfuhren Array ist für Module , wie beispielsweise den Import BrowserModule, FormsModule,HttpModule
  • Erklärungen Array ist für Components, Pipes,Directives

siehe unten Änderung:

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
Pengyy
quelle
1
Vielen Dank für Antwort und Info. Es half.
Vlad Poltorin
9

Fügen Sie FormsModulein Import Array.
dh

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

Oder dies kann ohne Verwendung [(ngModel)]durch Verwendung erfolgen

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

anstatt

<input [(ngModel)]="hero.name" placeholder="Name">
Praveen Ojha
quelle
4

Entfernen Sie das FormsModule aus der Deklaration: [] und fügen Sie das FormsModule beim Import hinzu: []

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

Fahim zuhair
quelle
Was hat Ihre Antwort hinzugefügt, die die anderen noch nicht bereitgestellt haben?
Noctis
0

Dinge, die Sie hinzufügen können declarations: [] in modules

  • Rohr
  • Richtlinie
  • Komponente

Pro-Tipp : Die Fehlermeldung erklärt es -Please add a @Pipe/@Directive/@Component annotation.

Joshua Michael Waggoner
quelle