Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular2 (final version) *ngFor in component: Can't bind to 'ngForOf' since it isn't a known property of 'div' [duplicate]

I started using Angular2 (final version) and i'm having some problems with *ngFor.

I've built the following component tree: main -> dashboard -> alerts

Unhandled Promise rejection: Template parse errors: Can't bind to 'ngForOf' since it isn't a known property of 'div'.

("<div class="item" [ERROR ->] *ngFor="let alert of alerts"> "): DashboardAlertsComponent@5:20 Property binding ngForOf not used by any directive on an embedded template.

Make sure that the property name is spelled correctly and all directives are listed in the "directives" section.

It works ok but when i'm tried adding *ngFor loop in alerts component I got the following error:

DashboardAlertsComponent:

import {Component, OnInit} from "@angular/core";
import {Alert} from "../../shared/models/alert.model";

@Component({
  selector: 'dashboard-alerts',
  templateUrl: './alerts.component.html'
})
export class DashboardAlertsComponent implements OnInit {

  alerts:Alert[] = new Array<Alert>();
  constructor() {
    this.alerts.push(new Alert('1', 'high', 'My alert1', '12/11/2016 4:50 PM'));
    this.alerts.push(new Alert('2', 'low', 'My alert2', '11/11/2016 9:50 PM'));
    this.alerts.push(new Alert('3', 'medium', 'My alert3', '10/11/2016 2:50 PM'));
  }

  ngOnInit() {
  }
}

alerts.component.html

<div class="item" *ngFor="let alert of alerts">
    <span class="priority {{ alert }}"></span>
    <span class="title">{{ alert }}</span>
    <span class="time">3:40 PM</span>
    <a href="#" class="more-actions"><span>Actions</span></a>
</div>

DashboardModule

@NgModule({
  declarations: [
    DashboardAlertsComponent
  ],
  providers: [],
  directives: [],
})
export class DashboardModule {
}

AppModule

@NgModule({
  imports: [
    BrowserModule,
    DashboardModule
  ],
  declarations: [
    AppComponent
  ],
  bootstrap: [AppComponent]
})
export class AppModule {
}

P.S I read many suggested solutions for this problem but none of them solved this

like image 543
John Smith Avatar asked Nov 22 '16 09:11

John Smith


People also ask

Can't bind to ngForOf since it isn t?

Error: NG0303: Can't bind to 'ngForOf' since it isn't a known property of 'ion-item'. Explanation: This error occurs when you use ngIf/ ngFor in the component, where you have not imported CommonModule. Fix: To fix this you have to import the CommonModule in the module file which is used by that HTML file.

Can't bind to ngForOf since it isn't a known property of DIV in component?

To resolve this issue we need to import BrowserModule in the application's main module i.e app. module. ts file and also import CommonModule in the child module.

What is ngForOf?

ngForOf: NgIterable<T> : The value of the iterable expression. Useful when the expression is more complex then a property access, for example when using the async pipe ( userStreams | async ). index: number : The index of the current item in the iterable.


1 Answers

You should import CommonModule in the main module, and BrowserModule in the other modules (if you are working with multiple modules). I got the same problem and it works fine for me

like image 137
Mourad Idrissi Avatar answered Oct 17 '22 04:10

Mourad Idrissi