Непомічена помилка: Несподіваний модуль '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
Ніл Ланн,

Відповіді:


261

FormsModuleслід додати на imports arraynot declarations array.

  • імпорт масив для імпорту модулів , такі як BrowserModule, FormsModule,HttpModule
  • декларації масив для вашого Components, Pipes,Directives

див. нижче зміна:

@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,

0

Що можна додати declarations: [] in modules

  • Труба
  • Директива
  • Компонент

Порада професіонала : Повідомлення про помилку це пояснює -Please add a @Pipe/@Directive/@Component annotation.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.