私はこのプロジェクトでAngular 2 Material sidenavをこのように使用しています:
_<md-sidenav-layout>
<md-sidenav #start mode="side" [opened]="true">
<md-nav-list>
</md-nav-list>
</md-sidenav>
<button md-button (click)="start.toggle()">Close</button>
<router-outlet></router-outlet>
</md-sidenav-layout>
_
クリックイベントで要素の代わりにコンポーネントからstart.toggle()
を呼び出す方法は?
読んでくれてありがとう
次のように、コンポーネント内でViewChild
を参照するMdSidenav
をコントローラーで宣言する必要があります。
_// Sidemenu
@ViewChild('start') sidenav: MdSidenav;
_
ここで、start
は参照するコンポーネントの名前、この場合はsidenavです。
次に、コントローラーの関数内でthis.sidenav.toggle()
のように、そのサイドナブでメソッドを呼び出すことができます。
https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-to-view-child
オブジェクトを関数に渡します。
<md-sidenav-layout>
<md-sidenav #start mode="side" [opened]="true">
<md-nav-list>
</md-nav-list>
</md-sidenav>
<button md-button (click)="randomName(start)">Close</button>
<router-outlet></router-outlet>
</md-sidenav-layout>
import {Component} from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html'
})
export class AppComponent {
constructor() {
}
randomName(start: any) {
start.toggle();
}
}
<md-sidenav #sidenav class="example-sidenav" opened="false">
<div class="example-sidenav-content">
<button type="button" md-button (click)="toogleNav(sidenav)">
toogle
</button>
</div>
</md-sidenav>
そしてあなたのtsで:
export class AppComponent {
toogleNav(nav: any) {
if (nav.opened) {
nav.close()
} else {
nav.open();
}
}
}