2

sidenav 요소가 열려 있는지 확인하는 방법이 있습니까? API 문서 따르면, isOpen? 매개 변수가 있지만, 내 경우는 예외가 발생합니다 : 당신은 통제를 얻을 수 ViewChild를 사용할 필요가 EXCEPTION: Error in ./AppComponent class AppComponent - inline template:2:2 caused by: this.sidenav.isOpen is not a functionmaterial2가 열려 있는지 확인하십시오

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(); 
    } 
    } 

} 
+0

오류가 있습니까? 어떤 출력? – galvan

+0

@galvan, 죄송합니다. 내가 예외를 가지고 게시물을 업데이트했습니다. – Gabriel

답변

4

sidenav

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

Plunkr

+0

완벽한, 감사합니다! – Gabriel

2

그 문서를 오해 하느냐, isOpen? 토글 함수의 선택적 매개 변수입니다.

대신 속성을 확인할 수 있습니다. 이 작품은 나를 위해 :

@ViewChild('sidenav') sidenav: MatSidenav; 
onClick() { 
    console.log(`isOpen: ${this.sidenav.opened}`); 
} 
관련 문제