2016-01-21 20 views
7

Ich versuche Parameter über @Output zu übergeben, aber die gefeuerte Funktion empfängt nur 'undefined'. Kann mir bitte jemand den Weg zeigen Parameter über den EventEmitter des @Output zu übergeben? Zum Beispiel:Angular 2 @Output-Parameter

var childCmp = ng.core.Component({ 
      selector:'child-cmp', 
      outputs: ['myEvent'] 
      }).Class({ 
       constructor: function(){ 
          this.myEvent = new ng.core.EventEmitter(); 
          this.myEvent.emit(false); 
          } 
      }); 
var parentCmp = ng.core.Component({ 
       selector:'parent-cmp', 
       template:'<child-cmp (myEvent)="invoke()"'></child-cmp>', 
       directives: [childCmp] 
      }).Class({ 
       constructor:function(){}, 
       invoke: function(flag){ 
        // here flag is undefined!! 
       } 
      }); 
+1

Können Sie einige Code teilen? Was wird gesendet, wenn Sie EventEmitter.emit aufrufen? – Shikloshi

+0

Siehe auch https://angular.io/docs/ts/latest/api/core/Output-var.html –

+1

Ich habe ein Beispiel für meine Frage hinzugefügt –

Antwort

6

Sie shoud folgendes erhalten den Wert mit der Veranstaltung verwenden:

<child-cmp (myEvent)="invoke($event.value)"'></child-cmp>' 

Auf diese Weise die invoke Methode Ihrer childCmp als Parameter, um den Wert, den Sie bieten erhalten, wenn die emittierende myEvent benutzerdefinierte Ereignis.

Hoffe, es hilft Ihnen, Thierry

+2

$ event.value hat nicht funktioniert, aber $ event hat funktioniert !! Vielen Dank!!!! –

+1

Es ist ** $ Event ** in der Tat – tibbus

5

Thierry Antwort ist fast richtig, können Sie die $ event in der Ausgangsfunktion übergeben müssen:

<child-cmp (myEvent)="invoke($event)"'></child-cmp>' 
+1

In Zukunft sollten Sie wahrscheinlich nur die Antwort bearbeiten – adamdport

+0

Tatsächlich wusste ich nicht, dass Zeit, war vor 1 Jahr ¯ \ _ (ツ) _/¯ – tibbus