当前位置: 首页 > 知识库问答 >
问题:

Angular Exception:无法绑定到“ng forin”,因为它不是已知的本机属性

彭博厚
2023-03-14

我做错了什么?

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

共有3个答案

白成济
2023-03-14

尝试从“@angular/Common”导入导入{CommonModule};以angular final形式作为*NGFOR,*NGIF全部存在于CommonModule

壤驷麒
2023-03-14
匿名用户

用让...of代替让...in!!

如果您是Angular(>2.x)的新手,并且可能是从Angular1.x迁移过来的,那么您很可能会混淆inof。正如andreas在下面的注释中提到的,for..of迭代对象的for..in迭代对象的属性。这是ES2015推出的新特性。

只需更换:

<!-- Iterate over properties (incorrect in our case here) -->
<div *ngFor="let talk in talks">

<!-- Iterate over values (correct way to use here) -->
<div *ngFor="let talk of talks">

因此,必须将中的替换为ngfor指令中的以获取值。

汲睿
2023-03-14

因为这至少是我第三次在这个问题上浪费超过5分钟的时间了,我想我应该把这篇问答文章贴出来,我希望它能帮助到其他人...可能是我!

我在ngFor表达式中键入了in而不是of

在2-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不是具有同名输入属性的属性指令(类似于ngif),因此Angular尝试查看它是否是template元素的(已知本机)属性,而它不是,因此出现错误。

更新-从2-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>

 类似资料:
  • 是的,这可能是第一百次有人遇到这个问题,但没有解决办法对我有效。。。 我使用角2.0.0 rc和什么都不会工作,我想我错过了一些东西,但我不知道是什么 这是我的文件,它们都可以正确传输,是的,我尝试使用不推荐的路由,是的,我根据文档做了,两者都不起作用。 app.component.ts 主要的ts 指数html 其余的文件几乎都是教程中的复制粘贴,所以我不会用更多的代码来垃圾邮件。。。 更新,我

  • 我必须动态地创建一个复选框列表 无法绑定到“for”,因为它不是已知的本机属性 angular2 新错误消息 未处理的promise拒绝:模板分析错误:无法绑定到“for”,因为它不是“label”的已知属性。 这是我的plnkr显示错误:http://plnkr.co/edit/aAQfWvHc7h7IBuYzpItO?p=preview 我的代码中哪里出错了?

  • 我试图在这里遵循基本的Angular 2教程: https://angular.io/docs/js/latest/guide/displaying-data.html 我可以让angular应用程序加载并显示我的名字,代码如下: 但是,当我尝试添加字符串数组并尝试使用ng for显示它们时,它会抛出以下错误: 以下是代码: 我错过了什么?

  • 我已经将我的应用程序从Angular 2升级到Angular 6版本。ng build--prod正在成功构建应用程序。我能够登录到我的应用程序和50%的功能是完美的工作,在一些选项不工作和抛出下面的异常:

  • 最近开始玩《棱角2》了。到目前为止都很棒。因此,为了学习使用我开始了一个个人演示项目。 有了基本的路由设置后,我现在想从报头导航到一些路由,但由于我的报头是的父路由,所以我收到这个错误。 app.component.html header.component.html 现在我部分地理解了,我猜由于该组件是的包装器,所以不可能通过这种方式访问。那么,对于这样的场景,是否有可能从外部访问导航呢? 如果