我做错了什么?

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

当前回答

在angular 7中,通过在.module中添加这些行来解决这个问题。ts文件:

import {CommonModule} from @angular/common; 进口(CommonModule):

其他回答

使用这个

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

您需要指定变量以遍历对象的数组

在我的例子中,它是一个小字母f。 我分享这个答案只是因为这是谷歌的第一个结果

确保写*ngFor

在我的例子中,我没有在for循环中声明循环变量

<div *ngFor="pizza of pizzas; index as i">

而不是

<div *ngFor="let pizza of pizzas; index as i">

在声明了“let”之后,它就对我有用了。

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

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

在angular 7中,通过在.module中添加这些行来解决这个问题。ts文件:

import {CommonModule} from @angular/common; 进口(CommonModule):