例外:无法绑定到'ngFor',因为它不是已知的本机属性

Mar*_*cok 260 typescript angular2-directives ngfor angular

我究竟做错了什么?

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, [])
Run Code Online (Sandbox Code Playgroud)

错误是

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

Mar*_*cok 583

let在前面错过了talk:

<div *ngFor="let talk of talks">
Run Code Online (Sandbox Code Playgroud)

需要注意的是由于beta.17的用法#...一样NgFor已被弃用声明结构指令内的局部变量.请let改用.
<div *ngFor="#talk of talks">现在变成了<div *ngFor="let talk of talks">

原始答案:

#在前面错过了talk:

<div *ngFor="#talk of talks">
Run Code Online (Sandbox Code Playgroud)

很容易忘记这一点#.我希望Angular异常错误消息代替:
you forgot that # again.

  • @datatype_void,哈希(`#`)用于声明[本地模板变量](https://angular.io/docs/ts/latest/guide/template-syntax.html#!#local-vars) (4认同)

Ale*_*mov 66

另一个导致OP错误的拼写错误可能是in:

<div *ngFor="let talk in talks">
Run Code Online (Sandbox Code Playgroud)

而不是of:

<div *ngFor="let talk of talks">
Run Code Online (Sandbox Code Playgroud)


小智 20

这个声明在Angular2 Beta版中使用.....

此后使用let而不是#

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


Moh*_*ara 12

就我而言,这是一封小信f.我正在分享这个答案只是因为这是谷歌的第一个结果

一定要写 *ngFor


小智 8

您应该使用 let 关键字 as 来声明局部变量,例如 *ngFor="let talk of talk"


Alf*_*bel 7

在angular 7中,通过将以下行添加到.module.ts文件中来解决此问题:

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

  • 令人惊讶的是,这没有得到更多的支持。完全忘记在我的一个模块中导入 CommonModule 并自己遇到了这个错误。 (2认同)

Kri*_*eck 5

就我而言,我犯了*ng-for=从文档复制的错误。

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

如果我错了,请纠正我。但似乎*ng-for=已更改为*ngFor=


Sha*_*aun 5

对我而言,总而言之,我无意中将其降级为angular-beta-16。

let ...语法仅在2.0.0-beta.17 +中有效

如果在此版本以下的任何内容上尝试使用let语法。您将生成此错误。

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