Lỗi chưa xảy ra: Mô-đun không mong muốn 'FormsModule' được khai báo bởi mô-đun 'AppModule'. Vui lòng thêm chú thích @ Pipe / @ Chỉ thị / @ Thành phần


97

Tôi là người mới trong Angular. Tôi bắt đầu Tour of Heroes để tìm hiểu nó. Vì vậy, tôi được tạo ra app.componentvới two-wayràng buộc.

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

Theo hướng dẫn, tôi đã nhập FormsModule và thêm nó vào mảng khai báo. Lỗi xuất hiện ở bước này:

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

Đây là lỗi:

Lỗi chưa xảy ra: Mô-đun không mong muốn 'FormsModule' được khai báo bởi mô-đun 'AppModule'. Vui lòng thêm chú thích @ Pipe / @ Chỉ thị / @ Thành phần.


11
Đó là một "mô-đun". Nó thuộc về importsvà khôngdeclarations
Neil Lunn

Câu trả lời:


260

FormsModulenên được thêm vào lúc imports arraykhông declarations array.

  • nhập khẩu mảng là cho nhập khẩu mô-đun như BrowserModule, FormsModule,HttpModule
  • khai báo mảng là dành cho bạn Components, Pipes,Directives

tham khảo thay đổi dưới đây:

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

1
Cảm ơn bạn đã trả lời và thông tin. Nó đã giúp đỡ.
Vlad Poltorin

9

Thêm FormsModulevào Mảng nhập.
I E

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

Hoặc điều này có thể được thực hiện mà không cần sử dụng [(ngModel)]bằng cách sử dụng

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

thay vì

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

4

Xóa FormsModule khỏi Khai báo : [] và Thêm FormsModule trong các lần nhập: []

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


vậy, câu trả lời của bạn đã bổ sung điều gì mà những người khác chưa cung cấp?
Noctis

0

Những thứ bạn có thể thêm vào declarations: [] in modules

  • Ống
  • Chỉ thị
  • Thành phần

Mẹo chuyên nghiệp : Thông báo lỗi giải thích nó -Please add a @Pipe/@Directive/@Component annotation.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.