А что, сгруппировать массив
data
по значениям свойства
type
- нет, никак? А компонент аккордеона отдельный сделать - тоже никак? Предлагаю всё-таки подумать в эту сторону. Ну а пока - говнокод:
app.component:
opened = {}
get currentTabItems() {
return this.data.filter(n => n.type === this.tabs[this.activeTab].toLowerCase());
}
<app-navbar [tabs]="tabs" [(activeTab)]="activeTab"></app-navbar>
<app-faq
*ngFor="let item of currentTabItems;"
[item]="item"
[opened]="opened[item.type] === item"
(toggle)="opened[item.type] = $event ? item : null"
></app-faq>
faq.component:
@Input() opened;
@Output() toggle = new EventEmitter();
<div class="faq__box" [class.isOpen]="opened" (click)="toggle.emit(!opened)">