2017-07-24 3 views
2

In MyComponent versuche ich, ein anderes Ereignis von einem Ereignishandler auszustoßen. (Dieses neue Ereignis wird von der übergeordneten Komponente verwendet, um einige Aktionen auszuführen). Ich habe einen Ereignisemitter als Mitglied von MyComponent erstellt, aber die Ereignishandlermethode kann nicht auf den Ereignisemitter zugreifen. Es wirft ERROR TypeError: Cannot read property 'emit' of undefined. Ich habe einige verwandte Fragen zu StackOverflow gefunden, aber konnte nicht viel verstehen, weil ich neu bei Angular2 bin.wirft ERROR TypeError: Kann die Eigenschaft 'emit' von undefined nicht lesen

import { Component, Input, Output, OnChanges, SimpleChanges, OnInit, EventEmitter } from '@angular/core'; 

import YouTubePlayer from 'youtube-player'; 

@Component({ 
    selector: 'app-my-component', 
    templateUrl: './my-component.component.html', 
    styleUrls: ['./my-component.component.css'] 
}) 

export class MyComponent implements OnChanges, OnInit { 
    @Input() 
    videoURL = ''; 

    player : any; 

    videoId : any; 

    @Output() 
    myEmitter: EventEmitter<number> = new EventEmitter(); 

    ngOnInit(): void { 
    this.player = YouTubePlayer('video-player', { 
     videoId: this.videoId, 
     width: "100%" 
    }); 
    this.registerEvents(); 
    } 

    private registerEvents() { 
    this.player.on("stateChange", this.onStateChangeEvent); 
    } 

    private onStateChangeEvent(event: any) { 
    console.log("reached here: " + event); 
    this.myEmitter.emit(1); //throws `ERROR TypeError: Cannot read property 'emit' of undefined` 
    }  
} 

Könnte mir jemand helfen? Bitte beachten Sie, dass ich nur Ereignisse von onStateChangeEvent ausstrahlen muss, da ich später verschiedene Arten von Ereignisemittern für verschiedene Arten von Ereignissen haben werde. Also werde ich ein Schaltergehäuse in onStateChangeEvent setzen und verschiedene Emitter verwenden - einen für jeden Typ.

Antwort

Verwandte Themen