2016-11-20 41 views
2

我有幾個按鈕和div元素。 div被隱藏。我想揭示具體的div,當點擊特定的按鈕時。Angular 2.更改類只有聚焦元素

例如:您單擊第一個按鈕 - 只有第一個div出現(通過更改他的類出現)。

代碼:app.component.html

<button class="BUTTON" (click)="isHidden = !isHidden"> 
</button> 
<div class="ELEMENTTOSHOW" [ngClass]="{ 'subMenuShow':isHidden }">first 
</div> 

<button class="BUTTON" (click)="isHidden = !isHidden"> 
</button> 
<div class="ELEMENTTOSHOW" [ngClass]="{ 'subMenuShow':isHidden }">second 
</div> 

app.component.ts

export class AppComponent { 
    isHidden = false; 
} 

該解決方案是錯誤的,因爲當我點擊例如首先BUTTON然後出現兩個div ELEMENTTOSHOW。它不應該這樣工作,它只應該在特定的div上工作。

任何幫助表示讚賞。

編輯: 這裏是我的代碼預覽上plunker:

https://plnkr.co/edit/BQKanrtuoADClGLVSdBC?p=preview

它不是我的整個應用程序,只有提到的,非常簡單的一部分。

我已經添加了AngularJS標記,因爲您可以給我一個與angular1相關的解決方案,我會將其重寫爲angular2。

+0

您能否提供一個Plunker與您的應用程序的當前狀態?在上面介紹的代碼片段中,沒有任何實際的按鈕,只有元素帶有「按鈕」類。 –

+0

@TudorCiotlos https://plnkr.co/edit/BQKanrtuoADClGLVSdBC?p=preview –

回答

1

我重組它是這樣的:

HTML

<button class="BUTTON" (click)="isHiddenfirst = !isHiddenfirst"> 
</button> 
<div *ngIf="isHiddenfirst" class="ELEMENTTOSHOW subMenuShow"> 
    first 
</div> 

<button class="BUTTON" (click)="isHiddensecond = !isHiddensecond"> 
</button> 
<div *ngIf="isHiddensecond" class="ELEMENTTOSHOW subMenuShow"> 
    second 
</div> 

TS

import {Component} from 'angular2/core'; 

@Component({ 
    // Declare the tag name in index.html to where the component attaches 
    selector: 'hello-world', 

    // Location of the template for this component 
    templateUrl: 'src/hello_world.html', 
    styleUrls: ['src/hello_world.css'] 
}) 
export class HelloWorld { 

isHiddenfirst = false; 
ishiddensecond = false; 
} 

https://plnkr.co/edit/BOLCoRY0SmLe8GZT3PUG?p=preview

+0

謝謝,但它不是真正的動態。 Upvote我的問題,因爲我需要15代表upvote你的答案:P –

+0

我仍然需要4代表upvote,當我得到它我會upvote你。如果沒有人回答,我會將其作爲最佳答案進行檢查。 –

+0

我創建了另一個解決方案,使它更具動態性: https://plnkr.co/edit/dDIwSH6BFwIR0ZI10vlO?p=preview 我認爲你的問題是它們都出現在isHidden爲真時,因爲它們都設置爲當它是真的時顯示,當它是假的時候隱藏 – Bhetzie