何が間違っているのでしょうか?
import {bootstrap, Component} from 'angular2/angular2'
@Component({
selector: 'conf-talks',
template: `<div *ngFor="let talk in 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 'ngForIn' since it isn't a known native property
("<div [ERROR ->]*ngFor="let talk in talks">
ベストアンサー1
ngFor 式のin
代わりにと入力しました。of
2-beta.17 より前では、次のようになります。
<div *ngFor="#talk of talks">
beta.17 以降では、let
の代わりに 構文を使用します#
。詳細については、下記の UPDATE を参照してください。
ngFor 構文は次のように「desugars」されることに注意してください。
<template ngFor #talk [ngForOf]="talks">
<div>...</div>
</template>
代わりに使用するとin
、次のようになります。
<template ngFor #talk [ngForIn]="talks">
<div>...</div>
</template>
ngForIn
は、同じ名前の入力プロパティ ( など) を持つ属性ディレクティブではないためngIf
、Angular はそれが要素の (既知のネイティブ) プロパティであるかどうかを確認しようとしますtemplate
が、そうではないため、エラーが発生します。
更新- 2-beta.17 以降では、let
の代わりに 構文を使用します#
。これにより、次のように更新されます。
<div *ngFor="let talk of talks">
ngFor 構文は次のように「desugars」されることに注意してください。
<template ngFor let-talk [ngForOf]="talks">
<div>...</div>
</template>
代わりに使用するとin
、次のようになります。
<template ngFor let-talk [ngForIn]="talks">
<div>...</div>
</template>