Ben angular2 için yeniyim, bu yüzden sorunumu açıklarken yanlış şartları kullanırsam lütfen kusura bakmayın. Açısal2 bileşeninden EventEmitter kullanarak değişkenleri geçirebilir miyim?
Bir kullanıcı bir seçenek belirleyin sağlayan basit bir bileşen var. Şimdi bu seçeneği ana bileşene göndermek istiyorum. Bunu yapıyorum:// import the necessary angular2 resources:
import {Component, Output, EventEmitter} from 'angular2/core';
...
// create the emitter in my component class:
export class MyClassThatLetsUserSelectSomeContentId{
@Output() selectEvent: EventEmitter<any> = new EventEmitter();
public selectedId: string;
// this does get called, showing the correct id in the console
onSelect(selectedItem: MyCustomItem){
this.selectedId = selectedItem.id;
console.log("selectedId:" + this.selectedId);
this.selectEvent.emit(this.selectedId);
}
}
ve ana bileşende
Böyle şablonuna şunlardır:<my-selector-component (selectEvent)="onItemSelected(selectedItemId)"></my-selector-component>
Ve işlev CALLES olsun, ama değişken tanımlanmamış:
onItemSelected(selectedItemId: string){
console.log("onItemSelected(" + selectedItemId + ")");
}
konsol çıktısı:
günlük: onItemSelected (tanımlanmamış)
Yani ne eksik? Olay gönderilir ve işlev çağrılır, ancak parametre kaybedilir.Belki seçilmiş Id bağlanarak diğer bazı form daha iyi tamamen olurdu. Ana bileşen görünüm bileşeninden yeni bir seçime tepki verebileceği sürece herhangi bir çözüme açıkım.
<my-selector-component (selectEvent)="onItemSelected($event)">
</my-selector-component>
Eğer EventEmitter
ait emit
yönteminin parametresi olarak temin değeri buna karşılık gelir:
Teşekkürler, bu hemen işe yaradı! Dokümanlarda görmek için çok mu kör oldu ya da bu gerçekten gizli mi? –
Rica ederim! Artık özel bileşenlerin tetikleyebileceği olaylar için bu kadar net ... Hayır endişe ;-) –
Dinleyiciye birden fazla parametre mümkün mü? ör., onItemSelected ($ olayı, daha fazla, daha fazla) '. Bir dizi olarak '$ event'i oluşturabilirim, ama merak ediyorum. – allenhwkim