angular - استثناء: لا يمكن الربط بـ 'ngFor' لأنه ليس خاصية أصلية معروفة


ما الخطأ الذي أفعله؟

import {bootstrap, Component} from 'angular2/angular2'

@Component({
  selector: 'conf-talks',
  template: `<div *ngFor="talk of talks">
     {{talk.title}} by {{talk.speaker}}
     <p>{{talk.description}}
   </div>`
})
class ConfTalks {
  talks = [ {title: 't1', speaker: 'Brian', description: 'talk 1'},
            {title: 't2', speaker: 'Julie', description: 'talk 2'}];
}
@Component({
  selector: 'my-app',
  directives: [ConfTalks],
  template: '<conf-talks></conf-talks>'
})
class App {}
bootstrap(App, [])

الخطأ هو

EXCEPTION: Template parse errors:
Can't bind to 'ngFor' since it isn't a known native property
("<div [ERROR ->]*ngFor="talk of talks">

الإجابة رقم 1

لقد فاتني let أمام talk:

<div *ngFor="let talk of talks">

لاحظ أنه اعتبارًا من beta.17 أصبح استخدام #... لإعلان المتغيرات المحلية داخل التوجيهات الهيكلية مثل NgFor مهجورًا. استخدم let بدلاً من ذلك.

<div *ngFor="#talk of talks"> يصبح الآن <div *ngFor="let talk of talks">

الإجابة الأصلية:

فاتني # أمام talk:

<div *ngFor="#talk of talks">

من السهل جدًا أن ننسى أن #. أتمنى أن تقول رسالة خطأ استثناء Angular بدلاً من ذلك:
لقد نسيت # مرة أخرى.

الإجابة رقم 2

خطأ مطبعي آخر يؤدي إلى خطأ المستخدم الأصلي قد يكون استخدام in:

<div *ngFor="let talk in talks">

يجب أن تستخدم of بدلاً من ذلك:

<div *ngFor="let talk of talks">

الإجابة رقم 3

يُستخدم هذا البيان في إصدار Angular2 التجريبي.....

من الآن فصاعدًا استخدم let بدلاً من #

تُستخدم الكلمة المفتاحية let لإعلان متغير محلي

الإجابة رقم 4

في Angular 7 تم حل هذا بإضافة هذه الأسطر إلى ملف .module.ts:

استيراد { CommonModule } من '@angular/common'; الاستيرادات: [CommonModule]

الإجابة رقم 5

في حالتي، كانت حرف صغير f. أنا أشارك هذا الجواب فقط لأنه أول نتيجة على جوجل

تأكد من كتابة *ngFor