Я делаю аккордеон, чтобы сделать разборный div, используя javascript в угловом приложении.
Для которого, если его не открывается, нажмите на кнопку на Parent One
или на любом другом родительском имени ..
HTML :
<div *ngFor="let item of data">
<button class="accordion"> {{item.parentName}} </button>
<div class="panel" *ngFor="let child of item.childProperties">
<p> {{child.propertyName}} </p>
</div>
</div>
Ts :
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
data: any =
[
{
"parentName": "Parent One",
"childProperties":
[
{ "propertyName": "Property One" },
{ "propertyName": "Property Two" }
]
},
{
"parentName": "Parent Two",
"childProperties":
[
{ "propertyName": "Property Three" },
{ "propertyName": "Property Four" },
{ "propertyName": "Property Five" },
]
},
{
"parentName": "Parent Three",
"childProperties":
[
{ "propertyName": "Property Six" },
{ "propertyName": "Property Seven" },
{ "propertyName": "Property Eight" },
]
}
]
ngOnInit() {
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function () {
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
});
}
}
}
Примечание: Как я новичокв угловом я делаю это с помощью javascript способом .. Поэтому, пожалуйста, помогите мне достичь результата, используя чисто угловой и машинописный текст ..
Работающий stackblitz https://stackblitz.com/edit/angular-lp3riw
В демонстрации вы можете видеть, что родительская кнопка видна, но если вы нажмете на кнопку, она не будет развернута.
Также перечислены рабочие складные кнопки ниже со статическими значениями ..
Как сделать складной аккордеон, как и при заданных статических значениях стекаблиц, используя угловой и машинописный способ (без каких-либо сторонних или jquery) ..