微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular 2 * ngFor仅支持在内联模板中一次添加10个元素

我想在几个时间内重复特定元素,所以我使用* ngFor指令和[1,2,3,4,5,6,7,8,9,10]这样的硬编码数组,并且工作得很棒.我实现了我想做的事情.

@Component({
  selector: 'my-app',template: `<h1>My First Angular App</h1>
      <div *ngFor="let item of [1,10]">
          {{item}}: My Element 
      </div>`
})

Demo Plunkr

但是一旦我将数组大小增加到10以上,我就开始低于错误.哪个真烦人.

[email protected]?main=browser:355 Unhandled Promise rejection:
Unsupported number of argument for pure functions: 11 ; Zone: ;
Task: Promise.then ; Value: Error: Unsupported number of argument for
pure functions: 11(…) Error: Unsupported number of argument for pure
functions: 11

模板

<div *ngFor="let item of [1,10,11]">
  {{item}}
</div>`

我很想知道为什么一旦数组大小增加超过10就会发生错误?但另一个有趣的事情是当我在变量items = [1,11]中的组件中放入相同的数组并在* ngFor中使用了项目并且它得到了工作.

这种特殊情况背后有什么理由吗?如果我错过了一些简单/愚蠢的东西,我就是我.

Problem Plunkr

解决方法

这只是Angular2模板解析器的一个限制,以避免解析器的复杂性(按设计).无论如何,将数据保存在组件实例中通常是个好主意.

https://github.com/angular/angular/blob/d972d8235458a6e65819f96ee56da059ec76321b/modules/%40angular/compiler/src/view_compiler/util.ts#L82

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐