当用户单击链接时如何隐藏 Angular Material Sidenav

2024-05-06

我正在开发一个使用 Material UI 的 Angular 应用程序,我使用 Angular CLI 生成以下代码:

Navigation HTML


<mat-sidenav-container class="sidenav-container">
  <mat-sidenav #drawer class="sidenav" fixedInViewport [attr.role]="(isHandset$ | async) ? 'dialog' : 'navigation'"
    [mode]="(isHandset$ | async) ? 'over' : 'side'" [opened]="(isHandset$ | async) === false">
    <mat-toolbar>
      <mat-icon>keyboard_arrow_down</mat-icon> Select
    </mat-toolbar>
    <mat-nav-list>
      <a mat-list-item [routerLink]="['home']">
        <mat-icon>location_on</mat-icon> - Home
      </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>
    </mat-toolbar>
    <!-- Add Content Here -->
    <ng-content></ng-content>
  </mat-sidenav-content>
</mat-sidenav-container>

Navigation TypeScript


import { Component } from '@angular/core';
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
import { Observable } from 'rxjs';
import { map, shareReplay } from 'rxjs/operators';

@Component({
  selector: 'app-navigation',
  templateUrl: './navigation.component.html',
  styleUrls: ['./navigation.component.scss']
})
export class NavigationComponent {

  isHandset$: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset)
    .pipe(
      map(result => result.matches),
      shareReplay()
    );



  constructor(private breakpointObserver: BreakpointObserver) {}

}

我的问题是,我希望当用户单击链接时导航栏关闭(消失)。 我怎么做?当用户单击链接时,导航栏保持启用状态。我必须点击背景的某个地方才能让它消失。


您已经有模板参考#drawersidenav 组件的所以你可以像这样调用切换方法

 <mat-nav-list (click)="drawer.toggle()">
      <a mat-list-item [routerLink]="['home']">
        <mat-icon>location_on</mat-icon> - Home
      </a>
 </mat-nav-list>

如果我们想切换小屏幕(移动设备)的侧边栏底座

成分

  toggle(nav: MatSidenav) {
    const isSmallScreen = this.breakpointObserver.isMatched(
      "(max-width: 599px)"
    );
    if (isSmallScreen) {
      nav.toggle();
    }
  }

模板

 <mat-nav-list (click)="toggle(drawer)">
      <a mat-list-item [routerLink]="['home']">
        <mat-icon>location_on</mat-icon> - Home
      </a>
 </mat-nav-list>

demo ???? https://stackblitz.com/edit/angular-kyyadi

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当用户单击链接时如何隐藏 Angular Material Sidenav 的相关文章

随机推荐

  • C++:获取数组中char元素的索引

    我需要获取数组中的字符数 const char myarray 5 0 a e f c Create array of char int number 0 Create variable number getposition myarray
  • 如何从 C# 连接到 SQL 数据库?

    我正在尝试为我的家庭网络编写一个本地程序管理和安装系统 并且我认为我已经确定了技术 C NET WPF 客户端 Lua 用于安装脚本支持 通过 LuaInterface SQL Server Express 用于维护程序数据库 但是我不确定
  • git-svn 期间“RA 层请求失败:REPORT 请求失败”

    我一直在尝试使用以下命令 Git 克隆 Google Code SVN 存储库 git svn clone stdlayout https wtorrent project googlecode com svn wtorrent git 它
  • 为 3 人团队设置 Git?

    这篇文章的目的是总结所有信息 为 3 人参加比赛建立一个封闭的存储库 请随意将我没有注意到的问题添加到列表中 请将每个问题的每个答案添加为单独的答案 情况一 草稿和文件可以在3人之间交换 这 writer 只能将文件推送到 存储库 情况B
  • Postgresql 强制执行唯一的双向列组合

    我正在尝试创建一个表 该表将在两个方向上强制执行相同类型的两列的唯一组合 例如 这是非法的 col1 col2 1 2 2 1 我已经想出了这个 但它不起作用 database gt d friend Table public friend
  • DevTools 无法解析 SourceMap:chrome-extension

    我想一周前 我开始在我的谷歌浏览器控制台中收到警告消息 Clearing cache doesn t change anything the messages disappear only in incognito mode 有什么想法如何
  • Gurobi:预求解后保存模型以供重复使用

    我正在寻找一种在 gurobi 中保存预求解模型的方法 以便在下次运行模型时节省预求解所需的时间 我尝试在预求解后使用回调函数将模型写入 mps lp 文件 但是当我加载文件时 它再次开始预求解 如果我正在寻找的东西不可能的话 我也会感谢否
  • ExtJS EditorGridPanel 中的级联组合框

    我有一个正在运行的 EditorGrid 面板 其中两列有 ComboBox 编辑器 两个组合框都是从数据库远程加载的 countryStore and cityStore 我想限制cityComboBox仅显示所选国家 地区的城市 我需要
  • 不支持关键字:“元数据”。?使用 MVC3 在实体框架中使用 Sql 连接

    我将 Entity Framework 4 与我的 Asp Net MVC3 应用程序一起使用 我的问题是我正在使用实体框架对我的数据库执行操作 工作正常 出于其他目的 我还使用 Sql Connection 来存储和检索数据库中的数据 我
  • 远程 ssh 命令:第一个回显输出丢失

    我试图通过 ssh 1 liner 调用在远程机器上运行多个命令 方法是将它们指定为传递给 bash c 的分号分隔字符串 它适用于某些情况 但不适用于其他情况 看一下这个 Note the echo 1 output is lost ba
  • 如何获取 Django Model Field 对象的值

    我使用了一个模型字段对象field object MyModel meta get field field name 如何获取字段对象的值 内容 Use value from object https docs djangoproject
  • 在 GitLab CI 中使用合并请求作业中的工件

    在我的项目中 我使用合并请求来测试构建 并在提交合并到主版本后进行部署 目前我的 gitlab ci yml好像 build stage build script yarn build artifacts paths public depl
  • Django Book 平台可用吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 The 姜戈书 http www djangobook com en 1 0 有一个简洁的内容发布模板
  • AFNetworking + 取消所有请求

    当我想停止使用 AFNetworking 构建的同步引擎中的所有当前请求时 我确实遇到了问题 我有 5 个不同的 URL 需要查询 如果前一个查询正确执行 则每个查询都会启动 这非常有效 我想随时停止同步过程 所以我的代码是 void ca
  • Rails 3 和富文本编辑器 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在构建一个 Rails 3 应用程序 其中包含博客 评论和其他需要用户输入文本的功能 我的问题是使用 Javascript 富文本编辑器是否
  • for-yield-getOrElse 是 Scala 的范例还是有更好的方法?

    基本上我想提取一堆选项 a b 等 这是在 Scala 中执行此操作的最佳方法吗 对于我来说 括号中的 for yield 看起来有点令人困惑 for a lt a b lt b c lt c yield getOrElse 尝试使用map
  • 设置特定div的字符集

    是否可以为特定的 div 分配字符集 这样你就可以在一页上拥有多个字符集 我目前正在通过 JS 将文本片段导入到我的网站 其中一些文本需要 UTF 8 字符集 为了确保我的文本正确显示在包含的每个页面 有时是外部站点 上 我将元标记强制添加
  • mvvmcross:如何使用枚举值作为 ItemsSource

    我的模型中有以下内容 public class Equipment public enum Type Detector VegetationClearance Removal Engaging 在视图模型中 private Equipmen
  • 常见的 R 习语 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 R 习惯用法与 Java 和 Python 习惯用法一样 有哪些好的资源 我主要推荐R地狱 http
  • 当用户单击链接时如何隐藏 Angular Material Sidenav

    我正在开发一个使用 Material UI 的 Angular 应用程序 我使用 Angular CLI 生成以下代码 Navigation HTML