2016-12-21 3 views
3

Ich versuchte, meinen Kopf um @Input und @Output zu bekommen und hoffte auf Hinweise, wie mein Ansatz falsch ist.Benutzerdefiniertes Ereignis mit @Input und @Output

Im app.component ELTERN COMPONENT habe ich folgendes

@Output() dateChanged = new EventEmitter(); 
dateSelected:any; 

onDateSelected() { 
    this.dateSelected = this.yearValue + "|" + this.monthValue; 
    console.log(this.dateSelected);//is selected and prints out to console 
    this.dateChanged.emit(this.dateSelected); 
} 

dies der HTML-

<div> 
<!--app.component.html--> 

     <app-expenses (dateChanged)="onDateSelected($event)"></app-expenses> 
</div> 

geordnete Komponente Im Kind (ExpensesComponent) Komponente ist wie folgt

@Input() dateChanged: any; 

onDateSelected(e) { 
    console.log(e);//doesnt reach this point 
} 

onDateSelected wird nicht vonausgelöstWas wäre eine gute Möglichkeit, diesen Datumswert an das Kind weiterzugeben?

Dank

+1

Es ist nicht klar aus Ihrem Code, was Eltern ist und was Kind ist. Für mich sieht es aus wie '' könnte Kind und '' könnte Eltern sein, aber dann macht Ihre Frage keinen Sinn. Wenn das Kind das Ereignis ausstrahlt, warum möchten Sie, dass "onDateSelected" beim Empfang des Ereignisses beim Kind angerufen wird. –

Antwort

1

@Output() Veranstaltungen sind für die Eltern für Veranstaltungen der Kinder Komponenten, nicht umgekehrt zu hören.

Für die Eltern-Kind-Kommunikation können Sie die Datenbindung verwenden.

<app-expenses [selectedDateInChild]="selectedDateOfParent"></app-expenses> 
+0

Cool danke. ist es möglich, eine Funktion in der untergeordneten Komponente von dem übergeordneten Element aufzurufen, das das Datum als Wert übergibt? – Arianule

+0

Sie können 'selectedDateInChild' einen Setter machen, dann wird der Code im Setter jedes Mal ausgeführt, wenn' selectedDateOfParent' sich ändert –

+1

Ich bin mit Ihnen auf diesem ... jetzt bekomme ich es, danke – Arianule

Verwandte Themen