Ausgabe:Angular 2 - ein Element zeigen und die andere verbergen,
Ich habe ein Akkordeon aus 4 Elementen, wobei jedes Element Hiddes den Inhalt angezeigt werden soll, wenn ich auf das erste Element klicken, anstatt zu zeigen, bis zum ersten Element Inhalt zeigt es auch die anderen 3.
erwartetes Verhalten:
ich das erste Element klicken möchten und zeigen dann den Inhalt, der zu diesem Element gehört und halten hidding den anderen Inhalt.
Code:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-sabias-que',
templateUrl: './sabias-que.component.html',
styleUrls: ['./sabias-que.component.scss']
})
export class SabiasQueComponent implements OnInit {
private _isOpen : boolean = false;
private tips : Array<any> = [
{
heading: 'Title 1',
content: 'Content to be displayed'
},
{
heading: 'Title 1',
content: 'Content to be displayed'
},
{
heading: 'Title 1',
content: 'Content to be displayed'
},
{
heading: 'Title 1',
content: 'Content to be displayed'
}
]
closeOthers(openGroup): void {
this.tips.forEach((tip) => {
if (tip !== openGroup) {
tip.isOpen = false;
}
});
}
set isOpen(value: boolean) {
debugger;
this._isOpen = value;
if (value) {
this.closeOthers(this);
}
}
get isOpen() {
return this._isOpen;
}
constructor() { }
ngOnInit() {
}
showContent(): void {
this.isOpen = !this.isOpen;
}
}
HTML:
<ul class="tips-list">
<li *ngFor="let tip of tips">
<h3 class="tips-list__title"
[ngClass]="{'tips-list__title--active' : isOpen}" (click)="showContent()">
{{ tip.heading }}
</h3>
<p class="tips-list__answer" [hidden]="!isOpen">
{{ tip.content }}
</p>
</li>
</ul>
Bitte, wenn jemand sieht und Antwort, die ich einen Code oder ein Konzept Erklärung schätzen würde, ich weiß, wie diese JS mit jQuery oder Vanille zu tun, aber da es war OOP Ich verstehe die Verwendung von 'this'
überhaupt nicht.
Awesome !, sehr klar und ich habe den Code, vielen Dank. –
möchten Sie vielleicht folgende http://angularjs.blogspot.co.uk/2016/04/5-rookie-mistakes-to-avoid-with-angular.html lesen – 72GM