我做错了什么?

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">

当前回答

再讲一种情况当我得到同样的错误时原因是用in而不是in迭代器

错误的方式让文件进入文件

正确的方式让文件的文件

其他回答

在我的例子中,包含使用*ngFor导致此错误的组件的模块不包含在app.module.ts中。在imports数组中包含它为我解决了这个问题。

对我来说,长话短说,我无意中降到了角- β -16。

让…语法只在2.0.0-beta.17+中有效

如果在这个版本以下的任何版本上尝试let语法。您将生成这个错误。

要么升级到angular-beta-17,要么在items语法中使用#item。

此语句用于Angular2 Beta版本.....

以后用let代替#

Let关键字用于声明局部变量

另一个导致OP错误的拼写错误可以用在:

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

你应该用of代替:

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

也不要尝试使用纯TypeScript…我想更对应的用法和使用*ngFor="const filter of filters"和得到的ngFor不是一个已知的属性错误。只要用let替换const就可以了。

正如@alexander-abakumov所说的,of被in取代。