Syncfusion AI Assistant

How can I help you?

Set the nested accordion in Angular Accordion component

18 Sep 202510 minutes to read

Nested Accordions allow hierarchical organization of content within the Syncfusion Angular Accordion component, enabling multi-level expandable sections for applications like navigation menus, FAQs, or data trees. Render a child Accordion inside the content area of a parent Accordion item using Angular’s ng-template. This approach integrates the nested Accordion with full functionality, including expand/collapse behavior.

To set up nested Accordions, ensure the @syncfusion/ej2-angular-navigations package is installed and imported. Use ng-template inside each e-accordionitem tag with the #content attribute to define the item’s content area. Then, apply ng-template with a select attribute referencing an ID or class to map the nested content. Note that ng-template is an Angular core directive and requires no additional imports.

import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { AccordionModule } from '@syncfusion/ej2-angular-navigations'



import { Component, ViewChild } from '@angular/core';
import { AccordionComponent } from '@syncfusion/ej2-angular-navigations';
import { ExpandEventArgs, Accordion, AccordionClickArgs} from '@syncfusion/ej2-navigations';

@Component({
imports: [
         AccordionModule
    ],


standalone: true,
    selector: 'app-container',
    template: `
      <ejs-accordion>
        <e-accordionitems>
          <e-accordionitem expanded="true">
            <ng-template #header>
              <div>Video</div>
            </ng-template>
            <ng-template #content>
              <ejs-accordion>
                <e-accordionitems>
                  <e-accordionitem>
                    <ng-template #header>
                      <div>Video Track 1</div>
                    </ng-template>
                  </e-accordionitem>
                  <e-accordionitem>
                    <ng-template #header>
                      <div>Video Track 2</div>
                    </ng-template>
                  </e-accordionitem>
                </e-accordionitems>
              </ejs-accordion>
            </ng-template>
          </e-accordionitem>
          <e-accordionitem>
            <ng-template #header>
              <div>Music</div>
            </ng-template>
            <ng-template #content>
              <ejs-accordion>
                <e-accordionitems>
                  <e-accordionitem>
                    <ng-template #header>
                      <div>Music Track 1</div>
                    </ng-template>
                  </e-accordionitem>
                  <e-accordionitem>
                    <ng-template #header>
                      <div>Music Track 2</div>
                    </ng-template>
                  </e-accordionitem>
                  <e-accordionitem>
                    <ng-template #header>
                      <div>Music New</div>
                    </ng-template>
                    <ng-template #content>
                      <ejs-accordion>
                        <e-accordionitems>
                          <e-accordionitem>
                            <ng-template #header>
                              <div>New Track 1</div>
                            </ng-template>
                          </e-accordionitem>
                          <e-accordionitem>
                            <ng-template #header>
                              <div>New Track 2</div>
                            </ng-template>
                          </e-accordionitem>
                        </e-accordionitems>
                      </ejs-accordion>
                    </ng-template>
                  </e-accordionitem>
                </e-accordionitems>
              </ejs-accordion>
            </ng-template>
          </e-accordionitem>
          <e-accordionitem>
            <ng-template #header>
              <div>Images</div>
            </ng-template>
            <ng-template #content>
              <ejs-accordion>
                <e-accordionitems>
                  <e-accordionitem>
                    <ng-template #header>
                      <div>Track 1</div>
                    </ng-template>
                  </e-accordionitem>
                  <e-accordionitem>
                    <ng-template #header>
                      <div>Track 2</div>
                    </ng-template>
                  </e-accordionitem>
                </e-accordionitems>
              </ejs-accordion>
            </ng-template>
          </e-accordionitem>
        </e-accordionitems>
      </ejs-accordion>
      `
})

export class AppComponent {
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));