Tidak dapat mengikat ke 'ngForOf' karena ini bukan properti yang diketahui dari 'tr' (rilis final)

129

Saya menggunakan rilis Angular2 Final (2.1.0). Saat saya ingin menampilkan daftar perusahaan, saya mendapat error ini.

di file.component.ts:

public companies: any[] = [
    { "id": 0, "name": "Available" },
    { "id": 1, "name": "Ready" },
    { "id": 2, "name": "Started" }
];

di file.component.html:

<tbody>
  <tr *ngFor="let item of companies; let i =index">
     <td>{{i}}</td>
     <td>{{item.name}}</td>
  </tr>
</tbody>
Mourad Idrissi
sumber
9
pastikan Anda tidak melakukan kesalahan ketik juga ngformemberikan kesalahan yang Anda sebutkan. SeharusnyangFor
Piotr Kula
angular juga peka huruf besar / kecil.
Iftikhar Ali Ansari

Jawaban:

241

Tambahkan BrowserModuleke imports: []dalam @NgModule()jika modul root ( AppModule), jika tidak CommonModule.

// older Angular versions
// import {BrowserModule, CommonModule} from '@angular/common';

import { BrowserModule } from '@angular/platform-browser'
..
..
@NgModule({
  imports: [BrowserModule, /* or CommonModule */],
  ..
})
Günter Zöchbauer
sumber
2
ya, saya memiliki beberapa Modul. Saya lupa ini. Ini bekerja sekarang :) terima kasih
Mourad Idrissi
4
Mungkin perlu disebutkan bahwa CommonModule terletak di '@ angular / common' sehingga Anda harus memastikan untuk menambahkan impor {CommonModule} dari '@ angular / common'
knsheely
4
Saya memiliki masalah serupa. aplikasi saya memiliki beberapa modul, pernyataan modul Browser impor perlu ditambahkan di modul aplikasi dan di modul lain.
ssmsnet
1
Saya memiliki banyak modul. Itu menyelamatkan hariku. Terima kasih!
fabricioflores
1
terkadang itu bisa menjadi kesalahan ketik sederhana, kesalahan yang sama terjadi saat melakukan "* ngFor =" biarkan penumpang atau penumpang "<--- pemberitahuan:" atau "harus" dari ";-)
michabbb
44

Dalam kasus saya, masalahnya adalah rekan tim saya menyebutkan *ngfordalam template, bukan *ngFor. Aneh bahwa tidak ada kesalahan yang benar untuk menangani masalah ini (In Angular 4).

Mr_Green
sumber
baik itu bisa melempar saya untuk satu lingkaran;)
tony09uk
1
Serupa: Saya menulis *ngFor="let diagram if diagrams", perhatikan if. Pesan "parse error" akan lebih baik ...
klenium
@klenium, Anda menyelamatkan hari saya! saya mendapat kesalahan itu saat menggunakan *ngFor="lang in languages"where angular 8 harapkan *ngFor="let lang of languages". Pesan kesalahan yang cukup menyesatkan imo: /
Jona Paulus
37

Anda harus mengimpor 'CommonModule' di modul tempat Anda menggunakan arahan bawaan ini seperti ngFor, ngIf, dll.

import { CommonModule } from "@angular/common";


@NgModule({
  imports: [
    CommonModule
  ]
})

export class ProductModule { }
Codiee
sumber
3
Anda mengatakan mengimpornya ke dalam komponen, lalu menunjukkan kode yang mengimpornya ke dalam modul
Chris - Haddox Technologies
10

Hal-hal untuk diingat:

Ketika modul khusus digunakan (modul selain AppModule) maka perlu untuk mengimpor modul umum di dalamnya.

yourmodule.module.ts

import { CommonModule } from '@angular/common';

@NgModule({
  imports: [
    CommonModule
  ],
  exports:[ ],
  declarations: []
})
Rut Shah
sumber
Tahukah Anda mengapa saya mendapatkan kesalahan / peringatan itu sebenarnya di chrome bahkan setelah saya memiliki commonModule di kelas modul child / kustom saya?
Ak777
7

Jika Anda membuat modul Anda sendiri, tambahkan CommonModule di import di modul Anda sendiri

Alok Kamboj
sumber
Menambahkan CommonModule berhasil untuk saya. Harap perbaiki jawaban Anda. Bagikan langkah-langkahnya juga
Ashish Yadav
5

Ini juga bisa terjadi jika Anda tidak mendeklarasikan komponen rute dalam modul fitur Anda. Jadi contohnya:

feature.routing.module.ts:

...
    {
        path: '',
        component: ViewComponent,
    }
...

feature.module.ts:

     imports: [ FeatureRoutingModule ],
     declarations: [],

Perhatikan ViewComponent tidak ada dalam array deklarasi, padahal seharusnya.

Max Mumford
sumber
Terima kasih kawan, ini bukan masalah saya tetapi ini memberi saya petunjuk dan bingo, masalah saya terpecahkan !!
Abhinav Saxena
1

Modul Kustom Membutuhkan modul umum

impor {CommonModule} dari "@ angular / common";

@NgModule ({impor: [CommonModule]})

Vinayak Shedgeri
sumber
1

Saat menggunakan "app-routing.module" kami lupa mengimpor "CommonModule". Ingatlah untuk mengimpor!

import { CommonModule } from "@angular/common";
@NgModule({  imports: [ CommonModule]})
Juan Carlos WebMaster Ajahuana
sumber
1

Saya mengalami kesalahan yang sama tetapi saya telah mengimpor CommonModule. Sebagai gantinya saya meninggalkan koma di tempat yang tidak semestinya karena salin / tempel saat memisahkan modul:

@NgModule({
    declarations: [
        ShopComponent,
        ShoppingEditComponent
    ],
    imports: [
        CommonModule,
        FormsModule,
        RouterModule.forChild([
            { path: 'shop', component: ShopComponent }, <--- offensive comma
        ])
    ]
})
scsx
sumber
1

app.module.ts diperbaiki dan diubah menjadi: impor BrowserModule di modul aplikasi Anda

import { BrowserModule } from '@angular/platform-browser';

@NgModule({
  declarations: [
    AppComponent    
  ],
  imports: [
    BrowserModule, 
  ],     
  providers: [],
  bootstrap: [AppComponent]
})
Sanjay kumar
sumber
1

Saya mendapatkan kesalahan yang sama, Anda dapat memperbaikinya melalui salah satu metode ini:

  1. Jika Anda tidak memiliki modul bersarang

    Sebuah. Impor CommonModule di modul App Anda

    b. Impor Komponen Anda di tempat Anda menambahkan * ngFor di App Module , tentukan dalam deklarasi

// file App.modules.ts
@NgModule({
  declarations: [
    LoginComponent // declarations of your component
  ],
  imports: [
    BrowserModule
    DemoMaterialModule,
    FormsModule,
    HttpClientModule,
    ReactiveFormsModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })
  ],
  providers: [
    ApiService, 
    CookieService, 
    {
      provide: HTTP_INTERCEPTORS,
      useClass: ApiInterceptor,
      multi: true
    }
  ],
  bootstrap: [AppComponent]
})

c. Jika Anda menggunakan file modul terpisah untuk perutean, maka Impor CommonModule di modul Perutean Anda yang lain Impor CommonModule di modul Aplikasi Anda

// file app.routing.modules.ts
import { LoginComponent } from './login/login.component';
import { CommonModule } from "@angular/common";

const routes: Routes = [
  { path: '', component: LoginComponent },
  { path: 'login', component: LoginComponent }
];

@NgModule({
  imports: [RouterModule,RouterModule.forRoot(routes), CommonModule],
  exports: [RouterModule]
})
  1. Jika Anda memiliki modul bersarang, lakukan langkah pertama dalam modul tersebut

Dalam kasus saya, metode ke-2 menyelesaikan masalah saya.
Semoga ini bisa membantu Anda

Akshay Sharma
sumber
1

Bagi saya masalahnya adalah bahwa saya tidak mengimpor custom made modul HouseModuledi saya app.module.ts. Saya memiliki impor lainnya.

File: app.module.ts

import { HouseModule } from './Modules/house/house.module';

@NgModule({
  imports: [
    HouseModule
  ]
})
Ruben Szekér
sumber
1

Pembaca Masa Depan

Periksa setiap hal berikut:

  • Komponen dideklarasikan dalam TUNGGAL modul sudut
  • Pastikan Anda punya import { CommonModule } from '@angular/common';
  • Mulai ulang IDE / editor
Ben Winding
sumber
0

Saya mulai pada proyek live dasar Angular8 mendapat masalah di atas tetapi Ketika menggunakan "app-routing.module" kami lupa mengimpor "CommonModule". Ingatlah untuk mengimpor!

import { CommonModule } from '@angular/common';

@NgModule({
  imports: [
    CommonModule
]})

Ini akan menyelesaikan kesalahan Anda.

Nagnath Mungade
sumber
0

Masalah ini muncul ketika menggunakan Routes, kita dapat menampilkan konten statis dari setiap modul, tetapi ketika mencoba menggunakan fungsi ani seperti * ngIg tidak berfungsi, karena perlu pekerjaan seperti katakanlah @Ruben Szeker, perlu menambahkan Komponen ke app.module.ts pada impor [], untuk menyelesaikan penutupan atau mematikan eksekusi server dan mencoba kembali menjalankan servis, akan menyelesaikan masalah. jika ini tidak berhasil untuk Anda, saya akan mencoba cara lain.

Saya minta maaf atas bahasa Inggris saya yang buruk.

Developsonora tecnologa dan Inno
sumber
0

Saya mengalami masalah karena ** sebagai gantinya *

*ngFor="let ingredient of ingredients"

**ngFor="let ingredient of ingredients"
sunleo
sumber
Ya, VS Code sepertinya secara otomatis menempatkan dua bintang, bukan satu.
Alexei
0

Saya telah mengalami kesalahan serupa ( *ngIf) meskipun semua impor saya OK dan komponen diberikan tanpa kesalahan lain + perutean OK.

Dalam kasus saya AppModuletidak termasuk modul khusus itu. Yang aneh adalah bahwa ia tidak mengeluh tentang hal ini, tetapi ini mungkin terkait dengan cara kerja Ivy ng serve(jenis modul beban sesuai dengan perutean, tetapi ketergantungannya tidak dipertimbangkan).

Alexei
sumber
0

Baru saja kehilangan ~ 1 jam karena kesalahan ini, hanya pada satu halaman tertentu. Mencoba semua jawaban di sini, tetapi akhirnya solusinya adalah membangun kembali semuanya dengan ng, masalahnya hilang begitu saja ...

Elektordi
sumber
0

Jadi tolong pastikan

  1. Tidak ada kesalahan sintaks dalam arahan

  2. Modul Browser (dalam Modul Aplikasi) dan Modul Umum (di lain / anak) diimpor (Sama dengan yang disebutkan Günter Zöchbauer di atas)

  3. Jika Anda telah merutekan dalam aplikasi, modul rute harus diimpor di Modul Aplikasi

  4. Semua Module komponen yang dirutekan juga diimpor dalam App Module, misalnya: app-routing.module.ts adalah sebagai berikut:

    rute const: Rute = [

    {path: '', komponen: CustomerComponent},

    {jalur: 'admin', komponen: AdminComponent}

    ];

Kemudian modul App harus mengimpor modul CustomerComponent dan AdminComponent di @NgModule ().

Abhinav Saxena
sumber
-1

Meskipun saya menghadapi masalah yang sama, saya mencoba semua jawaban di sini, tetapi perubahan sederhana membantu saya menyelesaikan masalah ini, alih-alih menyertakan * ngFor dalam trtag, saya memasukkannya ke dalam tbodytag. Semoga membantu seseorang.

<tbody *ngFor="let product of products; let i=index">
        <tr >
            <td>{{product.id}}</td>
            <td>{{product.name}}</td>
            <td>{{product.description}}</td>
            <td>{{product.quantity}}</td>
            <td>
                <button type="button" >Update</button>
                <button type="button" (click)="crudService.delete(product.id)">Remove</button>
            </td>
        </tr>
    </tbody>
Surendra Mourya
sumber
-2

import CommonModule di kedua modul anak dan komponennya

Daner
sumber