angular - 检查material2 sidenav是否打开

标签 angular material-design angular-material angular-material2

有没有办法检查 sidenav 元素是否打开?根据API文档中,有一个 isOpen? 参数,但在我的例子中它抛出一个异常:EXCEPTION: Error in ./AppComponent class AppComponent - inline template:2:2 caused by: this.sidenav .isOpen 不是函数

import { Component, OnInit, ElementRef } from '@angular/core';

@Component({
  selector: 'app-sidebar',
  template: `
  <md-sidenav #sidenav mode="side" class="app-sidenav">
      Sidenav
  </md-sidenav>
  `,
  styleUrls: ['./sidebar.component.css'],
  host: {
      '(document:click)': 'onClick($event)',
  }
})
export class SidebarComponent implements OnInit {

  constructor(private sidenav: ElementRef) { }

  ngOnInit() {
  }

  onClick() {
     if (this.sidenav.isOpen()) {
         this.sidenav.close();
     }
  }

}

最佳答案

你必须使用 ViewChild 来控制 sidenav

@ViewChild('sidenav') sidenav: any;
opened: any = false;
onClick() {
   console.log(this.sidenav.opened);
}

Plunkr

关于angular - 检查material2 sidenav是否打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41591138/

相关文章:

angularjs - Angular Material 数据表搜索过滤器

html - Angular Material 进度条,使用自定义颜色

javascript - ng-sidebar(Angular 2)实现问题

android - SwitchCompat 未在设备上显示

android - 使用 MaterialComponents 主题后的 BottomSheet 样式

Android/Kotlin Material Button Group 默认选择

javascript - md-divider 未显示在 md-list 中

java - 使 Json 成为 Angular 对象

angular - FormBuilder 组已被验证器弃用

Angular2 react 形式删除错误