2017-10-31 3 views
0

私は次のコードを使用して多数のカスタムコントロールを繰り返しています。それらは構造のインデックスや位置のようなものを知る必要があるので、私はこのようにジャンクをまとめるためにconfigオブジェクトを渡しています。アングルのイテレータ* ngForでオブジェクトを宣言できません

<div *ngFor="let thing of stuff; let first=first; let last=last; let index = index;"> 
    <app-thingy [data]="thing" 
       [config]="{first:first,last:last,index:index}"> 
    </app-thingy> 
</div> 

私はよりコンパクトなコードを維持することを好むだろうと、それはletこれとletものと非常に反復的な構文のように思えます。だから私はこのような反復タグでオブジェクトをまっすぐに作ることができると考えました。

<div *ngFor="let thing of stuff; let config={first:first,last:last,index:index};"> 
    <app-thingy [data]="thing" 
       [config]="config"> 
    </app-thingy> 
</div> 

しかし、角度はconfigの定義におけるカーリーブラケットが無効な構文であることを主張し、この時に吠えます。

Uncaught Error: Template parse errors:
Parser Error: Unexpected token {, expected identifier, keyword, or string at column 45 in [let thing of stuff; let config={first:first,last:last,index:index};] in
...
<div [ERROR ->]*ngFor="let thing of stuff; let config=

限り、私はそれをgoolearchすることができ、構文はけど、私は理由を見ることができない間違っています。誰かが、光を当ててください。なぜこれらの2つのサンプルは同等ではありませんか?

私は、HTMLマークアップでnew MyType(...)を使用しても動作していないことに気付きましたが、これは設計上の問題によるものです。しかし、これは匿名のオブジェクト(タイプany)ですので、少し困惑しています。

答えて

0

を渡すことができ

WRONG

<div *ngFor="let thing of stuff; let config={first:first,last:last,index:index};"> 

component.htmlの内側に聞かせて使用してオブジェクトを宣言することはできません間違った

<div *ngFor="let thing of stuff; let config={first:first,last:last,index:index};"> 
    <app-thingy [data]="thing" 
       [config]="config"> 
    </app-thingy> 
</div> 

first:first、last:last、index:ループ条件を参照するインデックス。オブジェクトとして扱われません。あなたはfirst:firstに等しく、somelengthがlast:lasti as index:indexに等しいi=0よう

for(let i=0; i<somelength ;i++){} 

のようなJavaScriptでループのようにそれを理解することができます。彼らは上記のように渡すことはできません。

+0

こういったことを何度も何度も繰り返すことなく、それらを '[config]'に得る方法はありませんか?私の意見では、これは非常に冗長な構文です。 – DonkeyBanana

+0

ところで、私はあなたにdownvoteせず、私は@ sajeetharanをdownvoteしなかった。 – DonkeyBanana

+0

はい、あなたは

0

あなたが代わりにあなたは、TS内でオブジェクトを作成し、これはHTMLで

+0

2つのフォローアップに関する質問があります。最初の* how * - TSファイルの 'first'、' last'、 'index'にアクセスできないのですか?これらの値は列挙プロセス中に生成されたため、コンポーネントのロジックでは使用できませんでした。 2回目のフォローアップは*なぜ* - デザインの背後にある根拠を知りたいのですか? – DonkeyBanana

関連する問題