Uncaught Error: โมดูลที่ไม่คาดคิด 'FormsModule' ที่ประกาศโดยโมดูล 'AppModule' โปรดเพิ่มคำอธิบายประกอบ @ Pipe / @ Directive / @ Component


98

ฉันใหม่ใน Angular ฉันเริ่ม Tour of Heroes เพื่อเรียนรู้มัน ดังนั้นฉันจึงสร้างไฟล์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 { }

นี่คือข้อผิดพลาด:

Uncaught Error: โมดูลที่ไม่คาดคิด 'FormsModule' ที่ประกาศโดยโมดูล 'AppModule' โปรดเพิ่มคำอธิบายประกอบ @ Pipe / @ Directive / @ Component


11
มันคือ "โมดูล" มันอยู่ในimportsและไม่ใช่declarations
Neil Lunn

คำตอบ:


262

FormsModuleควรจะเพิ่มที่ไม่ได้imports arraydeclarations array

  • การนำเข้าอาร์เรย์เป็นโมดูลสำหรับการนำเข้าเช่นBrowserModule, FormsModule,HttpModule
  • การประกาศอาร์เรย์สำหรับคุณComponents, Pipes,Directives

ดูการเปลี่ยนแปลงด้านล่าง:

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

1
ขอบคุณสำหรับคำตอบและข้อมูล มันช่วยได้
Vlad Poltorin

9

เพิ่มFormsModuleใน Imports Array
กล่าวคือ

@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จากDeclaration: []และเพิ่มFormsModuleในการนำเข้า: []

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


แล้วคำตอบของคุณเพิ่มอะไรที่คนอื่นยังไม่ได้ให้?
Noctis

-1

สิ่งที่คุณสามารถเพิ่มได้ declarations: [] in modules

  • ท่อ
  • คำสั่ง
  • ส่วนประกอบ

เคล็ดลับสำหรับมือโปร : ข้อความแสดงข้อผิดพลาดอธิบาย -Please add a @Pipe/@Directive/@Component annotation.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.