2015-12-01 69 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

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

注意as of beta.17使用的#...到內聲明局部變量像NgFor這樣的結構指令已被棄用。改爲使用let
<div *ngFor="#talk of talks">現在變成<div *ngFor="let talk of talks">

原來的答覆:

我錯過了#在前面的talk

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

這是很容易忘記,#。我希望Angular異常錯誤消息會改爲:
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,並且我也使用angular2.0.0-beta.17 – Chadley08

2

在我的情況下,我犯了從文檔複製*ng-for=的錯誤。

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

糾正我,如果我錯了。但它似乎*ng-for=已被更改爲*ngFor=

+0

順便說一句,該鏈接呈現404錯誤 – Drew

3

對我來說,長話短說,我已經無意中降級到角-β-16。

的讓利......如果你想在這個版本以下的事情讓語法語法是2.0.0-beta.17 +

纔有效。你將會產生這個錯誤。

要麼升級到angular-beta-17,要麼在項目語法中使用#item。

9

本聲明中Angular2 Beta版的使用.....

此後使用瞬間

關鍵字用來聲明局部變量

8

在我的情況,這是一個小字母f。 我分享這個答案,只是因爲這是對谷歌

的第一個結果

請務必寫*ngFor

12

另一個錯字導致OP的錯誤可以使用in

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

而不是of

<div *ngFor="let talk of talks"> 
相關問題