2017-05-17 11 views
3

HTML角度の各反復要素に一意の値を追加します。リンク付き私はこのようなリストのHTMLを作っしたい、私は2角度 に問題がある2

<ul> 
    <li> 
    <li>.. 
</ul> 

が、私は、反復を追加する方法がわかりませんNG2のHTMLオブジェクトへの引数。 それは私のコードです:

<ul> 
    <li *ngFor="let item of geoNames | filterBy: userFilter" 
        (click)="showNameG= !showNameG" > 
     <a>{{ item.name }}</a> 
    </li> 
</ul> 

<div *ngIf="showNazwyG"> 
    <show-NameG></show-NameG> 
</div> 

そして私は、クリックされたから認識する要素liのそれぞれに別の名前を追加します。 AngularJSではこのような何かを働いた:

(click)="showNameG{{index}}= !showNameG{{index}}" 
+1

[ngFor](https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html)には説明的なマニュアルページがあります。 –

答えて

4

*ngForが変数indexコンテキストを提供し、その値をプロパティshowNameGを作成し、切り替え

<li *ngFor="let item of geoNames | filterBy: userFilter; let i=index" 
    (click)="showNameG[i]= !showNameG[i]" ><a>{{ item.name }}</a></li> 

更新

<li *ngFor="let item of geoNames | filterBy: userFilter; let i=index" 
    (click)="self['showNameG'] + i = !self['showNameG']" ><a>{{ item.name }}</a></li> 
export class MyComponent { 
    get self() { 
    return this; 
    } 
} 
+0

はい、それは動作していますが、これに関連する方法* ngIf

DictionaryComponent.html:10エラーTypeError:未定義のプロパティ '0'を読み取ることができません。このエラーをクリックしたときに表示されます – Mistu

+0

質問を少し誤解しました。 {(showName '+ i] = self)[' showName '+ i] 'のようなものが必要になります。 '(クリック)="これも['showName' + i] =!これは['showName' + i] '(ゲッターを追加しなくても)動作しますが、わかりません。 –

+0

追加ヒント: '{{}}' ** never **は '[foo]'や '(foo)'と一緒に動作します。どちらか一方、どちらもどちらでもない。 –

1

使用item

<li *ngFor="let item of geoNames | filterBy: userFilter" (click)="item.showNameG=!item.showNameG" ></li> 
+0

理想的な世界では、これはベストプラクティス(そして私のやり方)であることに同意します。しかし、OPはAnguarJSの文脈で「インデックス」を述べているので、同等のことを彼らに示すのは便利かもしれない。 –

+0

@ NeilLunn、GünterZöchbauerは、今追加することで答えが落ちるとすでに述べています。だから今のところそれに固執する – Satpal

+0

アイテムの名前が2つ以上の単語になる可能性があるので、この解決策は機能しません。 – Mistu

0

あなたの* ngForに以下を追加する必要があります。

let index = index; 

終わりに、あなたは、この持っている必要があります。ここでは

<ul> 
    <li *ngFor="let item of geoNames | filterBy: userFilter; let index = index;" (click)="showNameG[index] = !showNameG[index]" ><a>{{ item.name }}</a></li> 
</ul> 

を* ngForの良い説明です: https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html

関連する問題