2017-07-27 3 views
1

Ich habe ein einfaches Akkordeon, dass ich ein Feld öffnen und alle anderen auf Klick schließen möchte, und das auch für jedes Fealds tun. Ich habe ein Array von Abschnitten (Name der Felder). Was ich brauche, ist, Funktionen zu erstellen, eine, um den Wert von activeSection festzulegen, und andere, um den aktuellen Wert von activeSection zurückzugeben.Einfache Akkordeon Callback Funktion

<div *ngFor="let section of sections"> 
    <div class="element-div1" (click)="switchelement()">{{section}}</div> 
    <div class="element-box-div" *ngIf="activeSection==section"></div> 
</div> 

und in der Komponente:

import { Component, OnInit } from '@angular/core'; 

@Component({ 
    selector: 'element-resources', 
    templateUrl: './element-resources.component.html', 
    styles: [] 
}) 
export class ElementResourcesComponent implements OnInit { 

    sections=["Equipment", "People", "Elements", "Tasks", "Locations"]; 

    activeSection = "Equipment"; 

    constructor() { } 

    ngOnInit() { 
    } 

    switchelement (section) { 
     ; 
    } 
} 

Ich weiß es einfach Version ngIf zu verwenden ist, aber ich muss es auf diese Weise mit Callback-Funktion. Wenn Sie helfen könnten, und sagen Sie mir, was soll ich ändern und schreiben, wäre ich sehr dankbar sein;)

Antwort

0

gerade aktuellen section (aktuelle Iteration Wert übergeben) zu click Ereignis

(click)="switchelement(section)" 

und dann zuweisen activeSection von switchelement Methode.

activeSection: string; 

switchelement (section: string) { 
    this.activeSection = section; 
} 
+0

Great, thanks: D –

+0

Nicht wirklich zu diesem Thema, aber könnten Sie mir sagen, wie könnte ich die Hintergrundfarbe des ersten div auf diesem Klick zu ändern, und wenn ich auf anderem Feld klicken und Zurücksetzen Farbe Bisherige. Danke –

+0

@VladimirTomasevicMyNameIsVLT Anwendung Klasse basierend auf 'activeSession', könnten Sie verwenden' ngClass' Direktive wie '[ngClass] =" {'active': activeSection == Abschnitt} "' –