Hide sidebar in Angular Sidebar component

19 Jul 20238 minutes to read

The following example demonstrates how to hide master page sidebar. Initially sidebar is rendered with master page. While navigate to another page, it hides the master page sidebar using angular routing.

Refer the Sidebar component in app.component.html

<router-outlet>
    <ul>
        <li>
              <a routerLink="/">Master page</a>
        </li>
        <li>
              <a routerLink="/firstPage">First page</a>
        </li>
        <li>
              <a routerLink="/secondPage">Second page</a>
        </li>
        </ul>
</router-outlet>

<ejs-sidebar id="parent-sidebar" #sidebar width="260px" type="Push" class="e-hidden" (created)="onCreated()">
     <div class="title">
         <span id="close" class="e-icons" (click)="closeClick()"></span>
  </div>
  <div class="sub-title"> Application  Page Sidebar</div>
  
</ejs-sidebar>
<div id="myCarousel" class="carousel slide" data-ride="carousel" data-interval="6000">
    <h2 class="sidebar-heading"> Responsive Sidebar With Treeview</h2>
    <p class="paragraph-content">
        This is a graphical aid for visualising and categorising the site, in the style of an expandable and
        collapsable treeview component. It auto-expands to display the node(s), if any, corresponding to the currently
        viewed title, highlighting that node(s) and its ancestors. Load-on-demand when expanding nodes is available
        where supported (most graphical browsers), falling back to a full-page reload. MediaWiki-supported caching,
        aside from squid, has been considered so that unnecessary re-downloads of content are avoided where possible.
        The complete expanded/collapsed state of the treeview persists across page views in most situations.
    </p>
    <div class="line"></div>
    <h2 class="sidebar-heading">Lorem Ipsum Dolor</h2>
    <p class="paragraph-content">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
        eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
        nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
    </p>
    <div class="line"></div>
    <h2 class="sidebar-heading"> Lorem Ipsum Dolor</h2>
    <p class="paragraph-content">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
        reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
        occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    </p>
    <div class="line"></div>
    <h2 class="sidebar-heading"> Lorem Ipsum Dolor</h2>
    <p class="paragraph-content">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
        reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
        occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    </p>
    <div class="line"></div>
    <h2 class="sidebar-heading"> Lorem Ipsum Dolor</h2>
    <p class="paragraph-content">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
        reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
        occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    </p>
    <div class="line"></div>
    <h2 class="sidebar-heading"> Lorem Ipsum Dolor</h2>
    <p class="paragraph-content">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
        reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
        occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    </p>
</div>

Add this below code in app.component.ts

import { Component, ViewChild, AfterViewInit, ViewEncapsulation } from '@angular/core';

// importing Sidebar components from the ej2-angular-navigations package
import { SidebarComponent } from '@syncfusion/ej2-angular-navigations';

import { Router, NavigationEnd } from '@angular/router';

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css'],
    encapsulation:ViewEncapsulation.None
})
export class AppComponent implements AfterViewInit { {
  @ViewChild('sidebar')
  // Instance of the Sidebar in the main page
  public sidebarInstance: SidebarComponent;

  // The below variable will hold the URL of the navigation page when router event is triggered
  public urlValue: String;

  constructor(router: Router) {

    // registering router module in the component
    router.events.forEach((event) => {
      if (event instanceof NavigationEnd) {
        this.urlValue = event.url;
        //Based on the routed URL, Sidebar in the main page will expand or collapse.
        this.checkURL();
      }
    });
  }

  onCreated() {
    // This event will trigger whenever a Sidebar in the main page is rendered.
    if (this.sidebarInstance.element.classList.contains("e-hidden")) {
      this.sidebarInstance.element.classList.remove("e-hidden");
      this.checkURL();
    }
  }

  checkURL() {
    //Based on the routed URL, Sidebar in the main page will expand or collapse.
    (!this.urlValue || this.urlValue !== "/") ? this.sidebarInstance.hide() : this.sidebarInstance.show();
  }

  closeClick() {
    //On clicking the close icon, Sidebar will get collapsed
    this.sidebarInstance.hide();
  }

  ngAfterViewInit() {
    if (!this.urlValue || this.urlValue !== "/") {
      this.sidebarInstance.hide();
    }
  }
}

The following Sample demonstrates how to Hide the sidebar using angular service in routing application. Refer to this sample.

Sample