Angular2exception:由于它不是已知的本地属性,因此无法绑定到“ngForIn”
我究竟做错了什么?
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">
由于这至less是我第三次浪费了5分钟以上的时间,所以我想我会发问与答。我希望它可以帮助其他人在路上…可能是我!
我inputin
而不是在ngForexpression式。
Pre beta.17 ,应该是:
<div *ngFor="#talk of talks">
从beta.17开始,使用let
语法而不是#
。 进一步查看更新了解更多信息。
请注意,ngFor语法“desugars”到以下内容:
<template ngFor #talk [ngForOf]="talks"> <div>...</div> </template>
如果我们用它来代替,它会变成
<template ngFor #talk [ngForIn]="talks"> <div>...</div> </template>
由于ngForIn
不是具有相同名称的input属性(如ngIf
)的属性指令,因此Angular会尝试查看它是否是template
元素的(已知本机)属性,并且不是,因此是错误。
更新 – 从beta.17开始,使用let
语法而不是#
。 这更新到以下内容:
<div *ngFor="let talk of talks">
请注意,ngFor语法“desugars”到以下内容:
<template ngFor let-talk [ngForOf]="talks"> <div>...</div> </template>
如果我们用它来代替,它会变成
<template ngFor let-talk [ngForIn]="talks"> <div>...</div> </template>
就我而言,我错了
<div *ngFor="let talk of talks">
同
<div *ngFor="let talk in talks">
所以你必须用内部的*ngFor
指令代替。
我正在做Angular 1.x的方式。 花了我4个小时实现它! ☹️
在我的情况下,WebStrom自动完成插入的lowercased *ngfor
,即使它看起来像你select正确的骆驼一个( *ngFor
)。
我的问题是,Visual Studio自动降低* ngFor * ngfor复制和粘贴。
尝试import { CommonModule } from '@angular/common';
导入import { CommonModule } from '@angular/common';
在angular度最后as * ngFor,* ng如果所有都出现在CommonModule中
我的解决scheme是 – 从expression式^ __ ^中删除'*'字符
<div ngFor="let talk in talks">