Не может быть привязан к ‘NgForOf’, поскольку он не является известным свойством ‘ion-item’

#angular #ionic-framework #ionic4 #ngfor

#angular #ionic-framework #ionic4 #ngfor

Вопрос:

Я пытаюсь использовать ngFor для перебора элементов в моем списке. Однако я получаю это предупреждение в своем браузере, и список не отображается. Как мне это исправить? Я уже добавил BrowserModule и CommonModule к своему @NgModule импорту app.module.ts . Это не решило проблему.

app.module.ts

 import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';

import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';

import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';

import { CommonModule } from "@angular/common"; //if we want to use ngFor and other types //then we need to include common module to be able to use it


@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [
    BrowserModule,
    CommonModule,
    IonicModule.forRoot(),
    AppRoutingModule 
  ],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}
  

workoutplan.page.html

 <ion-header>
  <ion-toolbar>
    <ion-title>workoutplan !!</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <ion-list> 
    <ion-item  *ngFor ="let workoutplan of workoutPlans">
      {{workoutplan.title}}
    </ion-item>
  </ion-list>
</ion-content>
  

Ответ №1:

Единственной причиной этой ошибки может быть использование *ngFor внутри компонента, который не принадлежит AppModule . Я предполагаю, что вы используете *ngFor внутри компонента, который зарегистрирован в каком-то другом модуле (не в модуле AppModule или корневом модуле).

Просто импортируйте CommonModule этот конкретный модуль и добавьте его в imports массив.

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

imports: [CommonModule]
  

Комментарии:

1. Это правильно. Импорт должен быть в модуле, который объявляет WorkoutPage

2. Я пробовал это и раньше, но это не решает проблему.

3. Не могли бы вы добавить код модуля, в котором вы зарегистрировали свой компонент workoutplan.

4. Понимание первого абзаца привело меня в правильном направлении.