İstisna: Bilinen bir yerel özellik olmadığı için 'ngFor' kaynağına bağlanamıyor


286

Neyi yanlış yapıyorum?

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, [])

Hata:

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

Yanıtlar:


644

Kaçırdığım letönünde talk:

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

Bu Not beta.17 olarak kullanımına #...içinde NgFor gibi yapısal yönergelerinin lokal değişkenler bildirmek kaldırılmıştır. letBunun yerine kullanın .

<div *ngFor="#talk of talks"> şimdi olur <div *ngFor="let talk of talks">

Orijinal cevap:

Kaçırdığım #önünde talk:

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

Bunu unutmak çok kolay #. Ben Açısal durum hata iletisi yerine söylemek isterdim:
you forgot that # again.


Ve işareti tam olarak ne için? Kendi sorunlarımı çözdüm, ama bunun ne yaptığından emin değilim.
datatype_void

4
@datatype_void, hash ( #) yerel bir şablon değişkeni
Mark Rajcok

# "Bilinen bir yerel özellik olmadığı için 'ngFor' bağlanamıyor" üretilen # yerine "let" sözdizimi kullanarak çalıştı. Orijinal sorunuzda gördüğünüzle aynı davranış. Tekrar # olarak değiştirdim ve herhangi bir sorun olmadan çalışıyor gibiydi. Angular2.0.0-rc.1 kullanıyorum ve angular2.0.0-beta.17 ile aynı davranışı aldım
Chadley08 10:05

1
@ Chadley08, bir dalgıç oluşturun. İşe yaramalı. İşte bir rc.1 punkçı ve her ikisi de iyi çalışan bir beta.17 dalgıç .
Mark Rajcok

Hata mesajının yanıltıcı olmasıyla ilgili Açısal bir sorun: github.com/angular/angular/issues/10644
Alexander Taylor

79

OP'nin hatasına yol açan başka bir yazım hatası şunlar olabilir in:

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

Bunun ofyerine şunları kullanmalısınız :

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

21

Bu Açıklama Angular2 Beta sürümünde kullanılır .....

Bundan böyle # yerine izin ver

let anahtar kelimesi yerel değişkeni bildirmek için kullanılır


13

Benim durumumda, küçük bir harfti f. Bu cevabı sadece Google'daki ilk sonuç olduğu için paylaşıyorum

yazdığınızdan emin olun *ngFor


10

Açısal 7'de .module.tsdosyaya şu satırları ekleyerek bu sorunu çözdüm:

import { CommonModule } from '@angular/common'; imports: [CommonModule]


2
Bunun daha fazla oyu yok. Tamamen benim modüllerden birinde CommonModule almayı unuttum ve bu hataya kendim koştu.
Allen Rufolo

8

Yerel değişkenleri bildirmek için let anahtar sözcüğünü kullanmalısınız, örneğin * ngFor = "görüşmelerden bahsedelim"


5

Benim için uzun bir hikayeyi kısaltmak için, yanlışlıkla açısal-beta-16'ya düştüm.

Let ... sözdizimi SADECE 2.0.0-beta.17 + için geçerlidir

Bu sürümün altındaki herhangi bir şeye izin ver sözdizimini denerseniz. Bu hatayı oluşturacaksınız.

Açısal beta-17'ye yükseltin veya öğeler sözdizimindeki # öğeyi kullanın.



2

Bileşenime " @Input " (Doh!) İle açıklama eklemeyi unuttum

book-list.component.html ( Sorunlu kod):

<app-book-item
  *ngFor="let book of book$ | async"
  [book]="book">  <-- Can't bind to 'book' since it isn't a known property of 'app-book-item'
</app-book-item>

Book-item.component.ts dosyasının düzeltilmiş sürümü :

import { Component, OnInit, Input } from '@angular/core';

import { Book } from '../model/book';
import { BookService } from '../services/book.service';

@Component({
  selector: 'app-book-item',
  templateUrl: './book-item.component.html',
  styleUrls: ['./book-item.component.css']
})
export class BookItemComponent implements OnInit {

  @Input()
  public book: Book;

  constructor(private bookService: BookService)  { }

  ngOnInit() {}

}

2

Ayrıca bu saf TypeScript kullanmaya çalışmayın ... Ben daha fazla forkullanım ve kullanım karşılık istedim *ngFor="const filter of filters"ve ngFor bilinen bir özellik hatası var. Sadece const yerine let ile değiştirmek çalışıyor.

@ Alexander-abakumov ofyerine dedi in.


benim sorun "içinde" kullanıyordum "yerine
Ishimwe Aubain Consolateur

0

Benim durumumda, bu hatayla sonuçlanan * ngFor bileşenini kullanan bileşeni içeren modül, app.module.ts dosyasına dahil edilmedi. Ithalat dizisine orada dahil etmek benim için sorunu çözdü.


0

Sadece aynı hata almaya ve nedeni kullanıyordum bir dava daha kapsayacak şekilde de yerine ait Yineleyici içinde

Yanlış yol let file in files

Doğru yol let file of files


0

Bunu kullan

<div *ngFor="let talk of talks> 
   {{talk.title}} 
   {{talk.speaker}}
   <p>{{talk.description}} 
</div>

Bir nesne dizisi üzerinde yineleme yapmak için değişken belirtmeniz gerekir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.