Ich bin neu in Angular 2 und versuche, ein "onclick" -Ereignis an ein #sitenav-Objekt in einer übergeordneten Komponente/Vorlage zu binden.Angular 2: Eigenschaft 'close' von undefined kann nicht gelesen werden
menu.html (Child template)
<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 (Child template Komponentendatei)
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 (parent template-Komponente)
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 (Muttervorlage)
<!--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-->
Die (click)="sidenav.close()"
schließen #sitenav auf Klick, scheinen sie sich jedoch nicht von der menu.html Vorlage sichtbar zu sein, so bin ich den Fehler bekommen:
Cannot read property 'close' of undefined
Wie bin ich in der Nähe von #sidenav?
HTML-Markup und Elternkomponente sind die gleichen in Ihrem Code? – HGB
Ich habe den Code oben aktualisiert, aber nichts passiert. Keine Fehler. Sollte ' –
HGB
Und wie zielt es besonders darauf ab, das #sidenav Element zu schließen? – HGB