【问题标题】:Angular 2 *ngFor only supports to add 10 elements at a time in inline templateAngular 2 *ngFor 只支持在内联模板中一次添加 10 个元素
【发布时间】:2017-02-20 00:56:53
【问题描述】:

我想多次重复特定元素,所以我使用带有硬编码数组的*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,2,3,4,5,6,7,8,9,10]">
          {{item}}: My Element 
      </div>`
})

Demo Plunkr

但是,一旦我将数组大小增加到 10 以上,我就开始出现错误。这真的很烦人。

zone.js@0.6.25?main=browser:355 未处理的承诺拒绝: 纯函数不支持的参数数量:11;区域:; 任务:Promise.then ;值:错误:不支持的参数数量 纯函数:11(...)错误:纯的参数数量不受支持 功能:11

模板

<div *ngFor="let item of [1,2,3,4,5,6,7,8,9,10,11]">
  {{item}}
</div>`

我很想知道为什么一旦数组大小增加超过 10 就会发生该错误?但另一个有趣的事情是,当我将相同的数组放入变量 items= [1,2,3,4,5,6,7,8,9,10,11] 的组件中并在 *ngFor 中使用 items 时,它就成功了。

这种特殊情况背后有什么原因吗?如果我遗漏了一些简单/愚蠢的东西,请原谅我。

Problem Plunkr

【问题讨论】:

标签: angular ngfor


【解决方案1】:

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

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

【讨论】:

  • 我能得到任何提到同样事情的参考吗,为什么数字只有 10?
  • 我想我在测试版中得到了这个工作,可能是团队已经重构了一些东西并破坏了一些东西:p
  • 不应该,因为我的表情上没有 Pipe。可能是*ngFor 隐含地在做某事
  • 好的,我再等 1 个小时,然后我会在 github 页面上记录这个问题 :)
  • 我只是有点草率地阅读了您提供的信息。我认为我最初的答案仍然成立 - 按照设计。
猜你喜欢
  • 2021-02-28
  • 1970-01-01
  • 2019-10-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多