纯函数的参数数量不受支持

时间:2016-05-09 10:25:57

标签: javascript angularjs typescript angular

我在angular2(rc-1)中遇到问题,我通过组件绑定将一个字符串数组传递给我的函数。一旦数组长度超过10,我就会出错:

Unsupported number of argument for pure functions: 11

由于两个原因,这听起来有点奇怪:

  • 数组是单个参数
  • 为什么设置功能参数的限制? (我唯一想到的是性能优化,不使用arguments关键字)

组件选择器:

<tb-infinite-scroll
  [tbDataProperty]="[
    'prop1',
    'prop2',
    'prop3',
    'prop4',
    'prop5',
    'prop6',
    'prop7',
    'prop8',
    'prop9',
    'prop10',
    'prop11'
  ]"></tb-infinite-scroll>

在组件中:

@Component({
  selector: 'tb-infinite-scroll',
  inputs: [
    'dataProp:tbDataProperty',
  ],
  /*...*/
})

export class TbInfiniteScrollComponent {

  public dataProp:any = '';

然后在组件模板中:

<div *ngIf="sharedServices.typeOf(dataProp) === 'object'">
    <div class="tb-infinite-scroll__cell" *ngFor="let prop of dataProp">{{row[prop]}}</div>
</div>

堆栈追踪:

browser_adapter.js:77 Error: Uncaught (in promise): Unsupported number of argument for pure functions: 11
    at resolvePromise (zone.js:538)
    at PromiseCompleter.reject (zone.js:515)
    at eval (application_ref.js:295)
    at ZoneDelegate.invoke (zone.js:323)
    at Object.NgZoneImpl.inner.inner.fork.onInvoke (ng_zone_impl.js:45)
    at ZoneDelegate.invoke (zone.js:322)
    at Zone.run (zone.js:216)
    at zone.js:571
    at ZoneDelegate.invokeTask (zone.js:356)
    at Object.NgZoneImpl.inner.inner.fork.onInvokeTask (ng_zone_impl.js:36)

知道导致该问题的原因/任何解决方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我希望这可行:

<tb-infinite-scroll
  [tbDataProperty]="tbDataProperty"></tb-infinite-scroll>
@Component({
  selector: 'parent-component',
  /*...*/
})

export class ParentComponent {
  tbDataProperty = [
    'prop1',
    'prop2',
    'prop3',
    'prop4',
    'prop5',
    'prop6',
    'prop7',
    'prop8',
    'prop9',
    'prop10',
    'prop11'
  ];