【发布时间】:2017-07-08 17:48:57
【问题描述】:
我是 Angular 2 的新手,我正在尝试将“onclick”事件绑定到父组件/模板中的 #sitenav 对象。
menu.html(子模板)
<md-list-item *ngFor="let entry of entries">
<button md-menu-item (click)="sidenav.close()">
<md-icon>{{entry.icon}}</md-icon>
<span><a routerLink="{{entry.route}}">{{entry.link}}</a></span>
</button>
</md-list-item>
menu.ts(子模板组件文件)
import { Component } from '@angular/core';
@Component({
moduleId:module.id,
selector: 'navlinks',
templateUrl: 'menubtn.component.html'
})
export class MenuBtnComponent {
entries = [];
@Output() buttonClicked : EventEmitter<any> = new EventEmitter();
close(value:any){
this.buttonClicked.emit("close");
}
constructor() {}
ngOnInit() {
this.entries = [
{
icon: 'home',
route: '/',
link: 'Home'
},
{
icon: 'sentiment_satisfied',
route: '/about',
link: 'About Us'
},
{
icon: 'content_paste',
route: '/work',
link: 'Out Work'
},
{
icon: 'mail',
route: '/contact',
link: 'Get In Touch'
},
];
}
}
sitenav.ts(父模板组件)
import {Component, ViewChild, ViewEncapsulation, Directive} from '@angular/core';
import { MdMenuModule, MdMenuTrigger} from '@angular/material';
import { MenuBtnComponent } from './menubtn.component';
@Component({
moduleId:module.id,
encapsulation: ViewEncapsulation.Emulated,
selector: 'sitenav',
templateUrl: './sitenav.component.html',
styleUrls: [ './sitenav.component.css']
})
export class SitenavComponent {
clickedButton(val){
console.log(val);
}
}
sitenav.html(父模板)
<!--sidenav-->
<md-sidenav
#sidenav
class="app-sidenav md2 md-sidenav md-sidenav-side md-sidenav-closed"
mode="side">
<md-list flex="" role="list" class="flex">
<navlinks (buttonClicked)="close($event)"></navlinks>
</md-list>
</md-sidenav>
<!--//sidenav-->
(click)="sidenav.close()" 在单击时关闭#sitenav,但是从 menu.html 模板中似乎看不到它,所以我收到了错误:
Cannot read property 'close' of undefined
如何在#sidenav 附近装箱?
【问题讨论】:
标签: angular events binding scope eventemitter