mat-sidenav is open when the page loads. How do I close it?

4.4k Views Asked by At

mat-sidenav is open when the page loads. How do I close it?

This is my HTML:

<mat-sidenav
    #drawer
    class="sidenav" position="end"
    fixedInViewport="true"
    [attr.role]="(isHandset$ | async) ? 'dialog' : 'navigation'"
    [mode]="(isHandset$ | async) ? 'over' : 'side'"
    [opened]="!(isHandset$ | async)">
    <mat-toolbar color="warn">Menu</mat-toolbar>
    <mat-nav-list>
      <a mat-list-item [routerLink] = "['/brands']"> Brands </a>
      <a mat-list-item [routerLink] = "['/variants']"> Variants </a>
    </mat-nav-list>
</mat-sidenav>

Also, I want it to get close (when opened), when I click anywhere in page. Currently it is getting closed only when I click the menu button.

2

There are 2 best solutions below

0
On

Try the folllowing,

<mat-sidenav-container class="sidenav-container">
  <mat-sidenav
    #drawer
    class="sidenav"
    fixedInViewport="true"
    [attr.role]="(isHandset$ | async) ? 'dialog' : 'navigation'"
    [mode]="(isHandset$ | async) ? 'over' : 'side'"
    [opened]="!(isHandset$ | async)">
    <mat-toolbar color="warn">Menu</mat-toolbar>
    <mat-nav-list>
      <a mat-list-item [routerLink] = "['/brands']"> Brands </a>
      <a mat-list-item [routerLink] = "['/variants']"> Variants </a>
    </mat-nav-list>
  </mat-sidenav>
  <mat-sidenav-content>
    <mat-toolbar color="primary">
      <button
        type="button"
        aria-label="Toggle sidenav"
        mat-icon-button
        (click)="drawer.toggle()"
        *ngIf="isHandset$ | async">
        <mat-icon aria-label="Side nav toggle icon">menu</mat-icon>
      </button>
      <span>Application Title</span>
    </mat-toolbar>
  </mat-sidenav-content>
</mat-sidenav-container>
0
On

You can try it is working for my very well

<mat-nav-list>
  <a mat-list-item [routerLink] = "['/brands']" (click)="drawer.close()"> Brands </a>
  <a mat-list-item [routerLink] = "['/variants']" (click)="drawer.close()"> Variants </a>
</mat-nav-list>