2016-11-14 22 views
0

"Tour of Heroes"アプリを使用してAngularを学習しています。 multiple components partでは、ヒーロー名をクリックすることでヒーローの詳細を表示できます。 「ヒーロー詳細」コンポーネントの複数のインスタンスを持つデザインパターン(または実装)は何でしょうか。そのため、ヒーローがクリックされたときに各ヒーローの下に動的に表示されますか?Angularアプリケーションに同じコンポーネントの複数のコピーを挿入

template: ` 
    <h1>{{title}}</h1> 
    <h2>My Heroes</h2> 
    <ul class="heroes"> 
    <li *ngFor="let hero of heroes" 
     [class.selected]="hero === selectedHero" 
     (click)="onSelect(hero)"> 
     <span class="badge">{{hero.id}}</span> {{hero.name}} 
    </li> 
    </ul> 
    <my-hero-detail [hero]="selectedHero"></my-hero-detail> 
` 

私の目標は、それぞれの「LI」に「私のヒーロー・ディテール」の要素を持っているし、次に名をクリックすると、その特定の英雄の詳細とそれを表示することです。

答えて

1

あなたは<my-hero-detail>複数回使用することができます:あなたはそれがあるべきかを示す各ヒーローのための真/偽の値を含むようにselectedHeroesを更新する必要があり、詳細を表示/非表示を切り替えできるようにしたい場合は、

<ul class="heroes"> 
    <li *ngFor="let hero of heroes; let i=index" 
    [class.selected]="hero === selectedHero" 
    (click)="selectedHeroes[i] = !selectedHeroes[i]"> 
    <span class="badge">{{hero.id}}</span> {{hero.name}} 
    <my-hero-detail [hero]="hero" [style.display]="selectedHeroes[i] ? 'block' : 'none'"></my-hero-detail> 
    </li> 
</ul> 

を可視かどうか。

selectedHeroes: Object = {}; 

参照のデモ:<li><my-hero-detail>要素を含むことを期待していないので、スタイルがマングルされているhttp://plnkr.co/edit/nG0RkwR2kmr6AXzln6mU?p=info

注意。

+0

ここにあなたの例がないと思いますが "let i = index"と書いてありますが、全体的に感謝します!これと「ヒーロー」=「ヒーロー」は私が自分では理解できなかった2つの部分でした。 – jpou

+0

あなたは正しいです。 – martin

関連する問題