2

sidenav要素が開いているかどうかを確認する方法はありますか? API文書をよると、isOpen?パラメータがありますが、私の場合、それは例外をスロー:EXCEPTION: Error in ./AppComponent class AppComponent - inline template:2:2 caused by: this.sidenav.isOpen is not a functionmaterial2 sidenavが開いていることを確認してください

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

の制御を取得するためにViewChildを使用する必要がありますあなたはドキュメントを誤解している、isOpen?トグル機能のオプションパラメータです。

代わりにプロパティを確認できます。これは私のために働く:

@ViewChild('sidenav') sidenav: MatSidenav; 
onClick() { 
    console.log(`isOpen: ${this.sidenav.opened}`); 
} 
関連する問題