如何使用sidenav的EventEmitter(onClose)

2024-03-25

我想检查一下我的

<md-sidenav>

即将关闭。 有没有办法使用我的 sidenav 对象的 EventEmitter onClose 来检查? 你能举个例子吗?


这可以通过两种不同的方式实现 - 通过模板,以及在组件代码本身内。

假设 HTML 模板如下所示:

<md-sidenav-container>
  <md-sidenav #mySidenav (close)="onClose()" mode="side">
    This is sidenav content
  </md-sidenav>
  <button md-raised-button (click)="mySidenav.toggle()">Toggle Sidenav</button>
</md-sidenav-container>

在你的组件中你可以有这样的东西:

import { AfterViewInit, Component, OnDestroy, ViewChild } from '@angular/core';
import { MdSidenav } from '@angular/material'
import { Subscription } from 'rxjs'

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {

  @ViewChild('mySidenav')
  sidenav: MdSidenav;

  subscription: Subscription;

  ngAfterViewInit(): void {
    this.subscription = this.sidenav.onClose.subscribe(() =>
      console.log("Closed event from observable"));
  }

  ngOnDestroy(): void {
    this.subscription.unsubscribe();
  }

  onClose(): void {
    console.log("Closed event from template");
  }

}

技术 1 是使用事件绑定。这是(close)="onClose()"模板的部分。每当 sidenav 触发 close 事件时,引号中指定的代码(即onClose())运行。在这种情况下,该方法onClose()(在组件代码中定义)被调用,并将一些文本打印到控制台。您可以在以下位置找到有关此技术的更多信息角度文档的事件绑定部分。 https://angular.io/docs/ts/latest/guide/template-syntax.html#!#event-binding

技术 2 是在组件代码本身中订阅事件。在这种技术中,我们将 sidenav 导出为变量mySidenav。这是#mySidenav模板的部分。在组件代码中,我们可以使用以下命令获取对 sidenav 的引用@ViewChild('mySidenav')注解。当我们的组件初始化时,我们可以访问 sidenav,因此每当关闭事件被触发时就运行一些代码。在这种情况下,我们使用subscribe()的方法Observable界面。当组件被销毁时,取消订阅很重要,以防止内存泄漏,因此unsubscribe()打电话进来ngOnDestroy()。您可以在中找到有关可观察量的更多信息rxjs 文档的 Observables 部分 https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/subscribe.md.

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

如何使用sidenav的EventEmitter(onClose) 的相关文章

  • 为 Angular2 中的组件加载多个样式表

    我正在构建一个 angular2 应用程序 当我尝试为同一组件加载多个样式表时 我面临多个问题 这是我正在做的代码 import Component from angular core Component selector my tag t
  • Angular:如何动态更改 scss 变量?

    我对 scss 很陌生 所以我想知道是否可以使用组件的 Typescript 来更改 scss 变量 所以考虑一下 html div div scss thememode theme1 textcolormode nonHover colo
  • 订阅的角度替代方案?

    我使用的是异步订阅 因此计数器变量在更新之前被返回 是否有另一种订阅方法 允许我仅在计数器变量更新为从后端获取的值后才返回计数器变量 makeOffer product string offer number number let form
  • Angular2中如何从另一个模块继承一个模块?

    因此 我使用 Angular 2 Final 2 0 0 假设我创建了一个 WidgetsModule 其中包含一堆指令和组件 这些指令和组件将帮助我构建应用程序 然后将其导入到我的 AppModule 中 import NgModule
  • 无法获取子 DOM 元素

    注 由于问题有点复杂 为了可读性对代码进行了抽象 We ve a
  • Firebase 重定向域已列出,但仍给出 signInWithRedirect 错误

    我有一个 Angular 2 应用程序 它使用 firebase 进行身份验证 我想使用 Google 作为我的身份验证提供商 并进行所有设置以使其正常工作 如果我尝试使用signinWithPopup进行身份验证 如文档中所述 它会起作用
  • 未捕获的类型错误:ctorParameters.map 不是函数

    我正在尝试使用dragula https github com valor software ng2 dragula在我的 angular2 应用程序中 这是我的代码中的 app module import BrowserModule fr
  • Angular 2 SPA Azure Active Directory JWT 问题

    想知道是否有 Azure Active Directory Angular 2 Adal 专家可以提供帮助 我的设置如下 具有三个应用程序注册的 Azure Active Directory 一种用于 Web API 一种用于 WPF 应用
  • router.navigate 不起作用(Angular6,延迟加载)

    我是 Angular 4 的新手 目前使用 v 6 我一直在尝试使用this router navigate 登陆 从登录组件重定向到登陆组件的功能 它无法正常工作 它将显示登录页面一秒钟 然后再次重定向回登录页面 但是 例如 如果我尝试浏
  • 如何提供 Angular 2 dist 文件夹index.html

    我正在使用这个 Angular 4 种子应用程序 https github com 2sic app tutorial angular4 hello dnn https github com 2sic app tutorial angula
  • 使用 Angular2 Router 发出 router.navigate 时出现无限重定向循环

    Note使用相关代码片段进行编辑 我遇到了一个奇怪的问题 在发出 router navigate 时 我进入了无限重定向循环 Setup 我使用哈希位置策略 并且该应用程序用作 Outlook 插件 I have three routing
  • 检测 Angular 项目中的浏览器刷新

    我想使用我的路由器来检测页面何时刷新单页应用程序 https en wikipedia org wiki Single page application 角度项目 还有其他方法吗 In the 组件 ts file import Subsc
  • 如何在使用页面锚点导航时设置“激活”类以在 Angular 2 中引导导航栏?

    我正在使用 Angular 2 和 Bootstrap 4 创建一个单页网站 我创建了一个始终位于页面顶部的导航栏组件 并且我正在使用页面锚点导航 id 请注意 我还没有创建路由模块 到目前为止还没有必要这样做 导航栏代码如下
  • Typescript导入别名+桶文件

    我最近花了很多时间 因为 Angular ngrx typescript 生态系统中某些事物的特定行为 并且我无法识别可能的根本原因 场景 我已经构建了一些效果 并将它们导出到桶文件中 index ts import MyEffects f
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • 在 Angular 6 表单生成器中找不到具有未指定名称属性的控件

    当尝试使用 HTML 文件更新网格表时 我收到此错误消息 在这里 我使用了静态数据来显示表格 并从显示 primeng 表的其他组件导入 并且我添加了一个更新按钮 该按钮具有重定向到另一个页面以更新数据的功能 该问题出现在 HTML 文件的
  • Angular 6 + RxJS 6.0:如何将新元素推送到 Observable 包含的数组

    我从 firebase 服务器分块接收数据 同时渲染该数据需要一个坚持可观察包含数组的库 我不知何故无法将新的数据块推送到可观察到的现有数据块数组 从数据服务中 我通过主题的下一个调用并尝试添加新的 calEvent this homeWo
  • 当可观察值可用时,UI 不会自动更新

    在 angular2 中 我创建了可观察的 uploadProgressStatus 它接受数字 使用异步管道 我想在 UI 上显示数字 并在输入新值时自动更新 请参阅下面的代码 home component ts 正在观察 upload
  • Angular2 中自定义指令和组件之间的通信

    我有一个模板 其中包含文本框 一个 span 标签和一个 div 标签 div 标签具有 selectedColor 自定义指令 我想在输入值更改时更改 span 和 div 标签的背景颜色 所以最后我希望我的指令对输入更改做出反应并设置
  • 应用程序 Angular2 外部的路由

    我在 Angular2 中有一个应用程序 我需要在应用程序外部导航 我有简单的看法 a target blank library url a 我想导航到library url 我有导航方法 goToPage url string What

随机推荐

  • 视觉工作室项目文件

    和有什么区别 vcproj and a vcxprojVisual Studio 项目文件 是个 vcproj格式仅在 2010 年之前的 Visual Studio 版本中可用 我问这个问题是因为我正在阅读 10 12 的 MSDN 教程
  • 如何使用 ggplot 生成非标准绘图类型?

    我想用 ggplot 制作一个看起来与此非常接近的图 在这里找到 http learnr files wordpress com 2009 07 chapter04 04 05 r png 然而 我想绘制条件范围 而不是频率 这是我想要在
  • R 中的形式参数“数据”与多个实际参数匹配

    当我在 R 中运行以下代码时 library mclust data iris mc lt Mclust iris 1 4 3 plot mc data iris 1 4 what classification dimens c 3 4 t
  • 遗留应用程序的迁移:EJB3或Spring

    我有旧应用程序使用struts ejb2 0 hibernate v3 0在 JBoss v4 0 上运行 现在我们已经将该应用程序迁移到新技术堆栈 我们正在探索pros and cons不同的技术堆栈 现在我们有两种选择 EJB3 0 J
  • 如何向随机频道发送消息?

    我正在尝试制作一个机器人 当用户发送特定消息时 它会向随机选择的频道发送随机消息 除了获取所有频道 ID 并手动将它们添加到列表中 然后从该列表中随机选择之外 我不知道如何解决这个问题 但是这种方法存在一些非常大的问题 而且它不起作用 我尝
  • 0除以无穷大一定是0吗?

    根据这个问题 https stackoverflow com questions 1613988 dividing by infinity n inf预计为零n 0 什么时候呢n 0 根据 IEEE 754 0 inf 0总是正确的 从数学
  • 如何在微风中全局应用 MaxExpansionDepth 或应用到整个控制器

    我找到了这个答案 MaxExpansionDepth 与最新的 webapi 和微风 https stackoverflow com questions 19668693 maxexpansiondepth with latest weba
  • 在 Rstudio 中使用 knitr 和在命令行中使用 knit2html 时,HTML 输出有所不同

    我正在尝试使用 knit 从 R markdown 文件生成 html 文档 当我在 R studio 中使用 knit html 按钮时 它工作正常 并且得到了我想要的输出 然而 当我在命令行中使用 knit2html 时 输出 html
  • 在 mono/Linux 下从命名管道读取/写入

    我想从 Linux 下的命名管道 FIFo 队列中读取 写入 我已经尝试了标准类 StreamWriter 和 System IO 中的其他类 但它失败了 因为它正在使用查找 有人曾经使用 Mono 从命名管道中写入 读取过吗 我正在设法阅
  • ES6 导入的执行顺序(HTML 和代码)

    如果我有以下情况 我说得对吗 你不能 100 确定three js将被处决AFTER one js and two js 但是 如果我有 我说得对吗 我可以有信心three js将被处决AFTER one js and two js 这个很
  • 不确定如何使用 CICrop 裁剪图像

    我正在尝试使用 CICrop 裁剪图像 但是当我尝试裁剪时 它崩溃并显示以下错误消息 由于未捕获的异常 NSUnknownKeyException 而终止应用程序 原因 setValue forUndefinedKey 这个类 不符合键的键
  • Entity Framework 4 CTP 4 Code First:如何使用非常规的主键和外键名称

    实体框架 4 中是否有方法 如果重要的话使用 CTP4 和 Code First 来更改用于自动识别主键和外键的约定 我尝试将 EF 与旧数据库一起使用 该旧数据库使用 pk fk 前缀而不是 id 后缀来标记键 此外 地址表具有多个外键
  • 无法在docker上安装jenkins的建议插件

    我已经通过docker启动了jenkins 它已经以管理员模式启动 输入密码后 当我选择安装建议的插件时 大部分安装都会失败 发布当我创建 jenkins 用户并导航到 jenkins 主页时 它显示错误 如下面的屏幕截图所示 通过以下命令
  • 某些实体变量的 Spring Security

    是否可以使用 Spring Security 来安全更新某些实体属性 例如 如果我有一个用户实体 我希望 ROLE USER 能够修改 更新用户的所有属性 除了可由 ROLE ADMIN 更新的活动列之外 我还没有找到Spring Secu
  • 相对布局中的百分比宽度

    我正在研究登录的表单布局Activity在我的 Android 应用程序中 下图是我想要的样子 我能够通过以下方式实现此布局XML 问题是 这有点hackish 我必须对主机 EditText 的宽度进行硬编码 具体来说 我必须指定 and
  • 是否有创建 BPMN 的 Java API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有办法以编程方式创建BPMN 2 0 http en wikipedia org wiki Business Process Mode
  • Symfony2 minify 无需 java 或 node

    我无法访问共享主机上的 java 或 node 有没有办法缩小服务器端 这样我就可以继续使用 assetic 而不需要这些引擎 Uglify 使用node yui compressor 无论如何已弃用 使用java Thanks 似乎有 2
  • 已安装的 gem 列表?

    我可以调用 Ruby 方法来获取已安装 gem 的列表吗 我想解析的输出gem list 有其他方法可以做到这一点吗 这列出了我安装的所有 gem gem query local http guides rubygems org comma
  • 如何使用 Moment.js 将日期验证为指定格式?

    我无法找到有关如何使用 moment js 验证日期输入以确保其格式为 2017 12 31T23 59 59Z 的现有问题 答案 鉴于我有一个日期字符串 2017 12 31T23 59 59Z 如何验证日期字符串严格采用指定的格式 YY
  • 如何使用sidenav的EventEmitter(onClose)

    我想检查一下我的