Errore non rilevato: modulo imprevisto "FormsModule" dichiarato dal modulo "AppModule". Aggiungere un'annotazione @ Pipe / @ Directive / @ Component


97

Sono nuovo in Angular. Ho avviato Tour of Heroes per impararlo. Quindi, sono stato creato app.componentcon two-wayrilegatura.

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

Seguendo il tutorial ho importato FormsModule e l'ho aggiunto nell'array delle dichiarazioni. In questo passaggio è apparso un errore:

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

Ecco l'errore:

Errore non rilevato: modulo imprevisto "FormsModule" dichiarato dal modulo "AppModule". Aggiungere un'annotazione @ Pipe / @ Directive / @ Component.


11
È un "modulo". Appartiene a importse nondeclarations
Neil Lunn

Risposte:


260

FormsModuledovrebbe essere aggiunto a imports arrayno declarations array.

  • importazioni matrice è per l'importazione moduli quali BrowserModule, FormsModule,HttpModule
  • le dichiarazioni di matrice è per la vostra Components, Pipes,Directives

fare riferimento alla modifica seguente:

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

1
Grazie per la risposta e le informazioni. Ha aiutato.
Vlad Poltorin

9

Aggiungi FormsModulein Imports Array.
cioè

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

O questo può essere fatto senza usare [(ngModel)]usando

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

invece di

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

4

Rimuovi FormsModule dalla dichiarazione: [] e aggiungi FormsModule nelle importazioni: []

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


quindi, cosa ha aggiunto la tua risposta che gli altri non avevano già fornito?
Noctis

0

Cose a cui puoi aggiungere declarations: [] in modules

  • Tubo
  • Direttiva
  • Componente

Suggerimento : il messaggio di errore lo spiega:Please add a @Pipe/@Directive/@Component annotation.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.