mat-sidenav 在页面加载时打开。我该如何关闭它?

Posted

技术标签:

【中文标题】mat-sidenav 在页面加载时打开。我该如何关闭它?【英文标题】:mat-sidenav is open when the page loads. How do I close it? 【发布时间】:2018-11-12 07:25:55 【问题描述】:

mat-sidenav 在页面加载时打开。如何关闭它?

这是我的 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>

另外,当我单击页面中的任意位置时,我希望它关闭(打开时)。目前只有当我点击菜单按钮时它才会关闭。

【问题讨论】:

【参考方案1】:

你可以试试它对我很有效

<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>

【讨论】:

【参考方案2】:

试试下面的,

<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>

【讨论】:

以上是关于mat-sidenav 在页面加载时打开。我该如何关闭它?的主要内容,如果未能解决你的问题,请参考以下文章

从任何组件动态更改 mat-sidenav 内容

Angular:mat-sidenav 在调整大小时忽略自动调整大小或模式

如何让 mat-sidenav 占据 mat-toolbar 下方的整个垂直空间?

如何在引导程序中的页面加载时打开模式对话框

打开控制台时如何不重新加载我的页面?

如何使可切换的 mat-sidenav 推送也成为 mat-sidenav-content 中的固定标题