2016-10-11 3 views
6

特定の要素を複数回繰り返したいので、[1,2,3,4,5,6,7,8,9,10]のようなハードコードされた配列の*ngForディレクティブを使用しています。私は自分がしたいことを達成しました。角2 * ngForは、インラインテンプレートで一度に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以上の配列のサイズを増加させたとして、私はエラーの下に取得を開始。それは本当に迷惑です。

[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,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]内のコンポーネントに入れ、items*ngForで使用したところ、うまくいきました。

このような特殊なケースの背後には何らかの理由がありますか?シンプル/愚かなものがないと私を強奪してください。

Problem Plunkr

+0

こんにちは、私はこのタスクhttp://stackoverflow.com/a/41039141/3297613を達成するために苦労しそうです。ここにデモplunkr https://plnkr.co/edit/B5ucnBONC55WTR3VnFBr?p=previewがあります。私のアプリは共通のサービスを持っていますが、私はその共通のサービス上にオブザーバブルを作成する方法を知りませんし、他のすべてのサービスをその特定のオブザーバブルに登録するようにします。ユーザーが一度ログアウトすると、すべてのサービスデータを消去したいだけです。 –

答えて

4

これは単に(デザインによって)パーサに複雑さを避けるためにAngular2テンプレートパーサの制限です。通常、コンポーネントインスタンスにデータを保持することをお勧めします。

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

+0

私は同じことを言及している参照を得ることができます、なぜ数は10だけですか? –

+0

私はこれがベータ版で動作していると思いますが、チームが何かをリファクタリングして何かを壊したかもしれません:p –

+0

私の表現にパイプがないので、そうしてはいけません。 –

関連する問題