각도 2를 처음 사용하고 "onclick"이벤트를 부모 컴포넌트/템플릿의 #sitenav 객체에 바인딩하려고합니다.각도 2 : 정의되지 않은 'close'속성을 읽을 수 없습니다.
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에 어떻게 표시합니까?
HTML 마크 업과 상위 구성 요소가 코드에서 동일합니까? – HGB
위의 코드를 업데이트했지만 아무 일도 일어나지 않습니다. 오류 없음. ' –
HGB
그리고 #sidenav 요소를 닫으려는 것이 무엇입니까? – HGB