Ale*_*évy 16 javascript angular2-template angular-material2 angular
我在这个项目中使用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>
Run Code Online (Sandbox Code Playgroud)
如何start.toggle()使用click事件从我的组件调用而不是元素?
谢谢你的阅读
Ale*_*ski 17
您想ViewChild在控制器中声明引用MdSidenav组件内部的a,如下所示:
// Sidemenu
@ViewChild('start') sidenav: MdSidenav;
Run Code Online (Sandbox Code Playgroud)
start您要引用的组件的名称在哪里,在本例中为sidenav.
接下来,您可以在sidenav上调用方法,例如this.sidenav.toggle()在控制器的函数内部.
https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-to-view-child
Ugn*_*kas 10
将对象传递给您的函数.
<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>
Run Code Online (Sandbox Code Playgroud)
import {Component} from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html'
})
export class AppComponent {
constructor() {
}
randomName(start: any) {
start.toggle();
}
}
Run Code Online (Sandbox Code Playgroud)