2015-12-01 4 views
135

何が間違っていますか?角度例外: '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"> 

答えて

326

である私はtalkの前でletを逃した:#...as of beta.17使用量は内部のローカル変数を宣言すること

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

注意をNgForのような構造ディレクティブの使用は推奨されません。代わりにletを使用してください。
<div *ngFor="#talk of talks">は今<div *ngFor="let talk of talks">

オリジナルの答えを次のようになります。

私はtalkの前で#を逃した:

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

#ことを忘れてとても簡単です。私は角度例外エラーメッセージが代わりに言う:
you forgot that # againします。

+0

正確には何ですかアンパサンドは?私は自分の問題を修正しましたが、これが何をするのかはわかりません。 –

+3

@datatype_void、ハッシュ( '#')は[ローカルテンプレート変数](https://angular.io/docs/ts/latest/guide/template-syntax.html#!#local-vars)を宣言するために使用されます。 –

+0

"let"構文の代わりに、 "既知のネイティブプロパティではないため、ngForにバインドできません"という構文を使用してみました。元の質問で見たのと同じ動作です。私はそれを#に戻しましたが、問題なく動作するように見えました。私はangular2.0.0-rc.1を使用しており、angle2.0.0-beta.17と同じ動作をしています。 – Chadley08

2

私の場合、私はドキュメントから*ng-for=をコピーするのを間違えました。

https://angular.io/guide/user-input

私が間違っているなら、私を修正してください。しかし、*ng-for=*ngFor=に変更されたようです。

+0

そのリンクが404エラーをレンダリングする – Drew

3

私にとっては、長い話を簡単に切るために、私は誤って角度β16にダウングレードしました。あなたがこのバージョン以下のものであるlet構文をしようとした場合

LET ...構文は2.0.0-beta.17 +

でのみ有効です。このエラーが発生します。

angle-beta-17にアップグレードするか、項目の構文で#itemを使用してください。

9

Angular2のベータ版で使用されるこの文を.....

以下の使用#の瞬間が

キーワードは、ローカル変数を宣言するのに使用させてみましょう

8

で私の場合は小文字のfでした。

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

:これはinを使用することができグーグル

上の最初の結果

*ngFor

12

OPのエラーにつながる別のタイプミスを記述することを確認しているという理由だけで が、私はこの答えを共有していますofの代わりに:

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