Как получить доступ к определенному аккордеону в списке аккордеонов, сгенерированных внутри ngfor в angular 2 - PullRequest
0 голосов
/ 30 мая 2018

У меня есть список сгенерированных дочерних аккордеонов, каждая внутри одной панели из списка панелей, созданных с помощью ngFor внутри родительского аккордеона.Мне нужно переключить определенный детский аккордеон согласно некоторой логике.Однако это не работает, я не могу определить один аккордеон в списке аккордеонов, сгенерированных в ngfor.

В html-файле

<ngb-accordion #acc1="ngbAccordion" >
 <ngb-panel #parentPanel *ngFor="let parentPanel of parentPanels; let parentPanelIndex=index" id="{{parentPanelIndex}}">
   <ngb-accordion #acc2="ngbAccordion" >
    <ngb-panel *ngFor="let childPanel of ChildrenPanels; let childPanelIndex=index" id="{{childPanelIndex}}">
  ....

В ts-файле:

@ViewChildren('parentPanels') parentPanels: QueryList<NgbPanel>;
....
this.parentPanels.toArray()[this.parentPanelIndex]

В последней строке будет указана ссылка на конкретную панель в соответствии со значением, хранящимся в parentPanelIndex.Теперь у меня есть доступ к родительской панели, но я не знаю, как получить ссылку на аккордеон (acc2) на этой панели.Есть предложения?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

ngbAccordion имеет свойство, известное как activeIds, которое принимает ID всех ngb-panel, которые вы хотите оставить открытыми.

activeIds должен быть массивом ID , который вы хотите оставить открытым.

Для получения дополнительной информации вот официальная документация .

0 голосов
/ 30 мая 2018

Вы можете использовать querySelector, чтобы перевести ребенка в произвольную позицию, например

 const child = this.panelsView
    .nativeElement
    .querySelector(`:nth-child(${this.elem})`);
    this.result = child.innerHTML;

. Вы можете найти пример здесь https://stackblitz.com/edit/angular-dwmajp

...