6
我是angular2的新手,所以如果在描述我的問題時使用了錯誤的術語,請原諒。我可以使用angular2組件中的EventEmitter傳遞變量嗎?
我有一個簡單的組件讓用戶選擇一個選項。現在我想分配這個選項給父組件。我這樣做:
// 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);
}
}
,並在主要成分包括我它在模板中是這樣的:
<my-selector-component (selectEvent)="onItemSelected(selectedItemId)"></my-selector-component>
而且功能確實得到卡列斯,但變量未定義:
onItemSelected(selectedItemId: string){
console.log("onItemSelected(" + selectedItemId + ")");
}
控制檯輸出是:
log:onItemSelected(undefined)
那麼我錯過了什麼? 事件被髮送,函數被調用,但參數丟失。
也許一些其他形式的綁定到選定的ID會更好。只要父組件可以對來自視圖組件的新選擇作出反應,我就可以接受任何類型的解決方案。
謝謝,這個工作馬上!我是否太盲目,無法在文檔中看到它,或者這真的是隱藏的? –
不客氣!事件現在非常清楚,自定義組件可以觸發...無後顧之憂;-) –
是否可能有多個參數給偵聽器?例如'onItemSelected($ event,more,more)'。我可以將'$ event'作爲一個數組,但只是好奇。 – allenhwkim