0
我有一個組件,看起來像這樣:創建一個從組件的方法觀察到,被稱爲事件處理程序
@Component({
template: `
...
<child-component (childEvent)="onChildEvent()"></child-component>
`
})
export class ParentComponent {
onChildEvent() {
...
}
}
我要將呼叫轉向onChildFinished
方法爲觀察到的序列。
現在,如果有問題的方法是一些「本機」DOM事件的處理程序,如點擊,模糊等,我會用Observable.fromEvent
,但在這種情況下,這似乎並不適用(因爲那裏不涉及本地事件)。
,想到的唯一的事情是這樣的:
@Component({
template: `
...
<child-component (childEvent)="onChildEvent()"></child-component>
`
})
export class ParentComponent implements OnInit, OnDestroy {
private childEventStream: Observable<void>;
// I am not sure, what is the type of this,
// seems like an internal RxJS thing
private observer: any;
onChildEvent() {
this.observer.next();
}
ngOnInit() {
this.childFinishedStream = Observable.create(
observer => this.observer = observer;
);
}
ngOnDestroy() {
this.observer.completed();
}
}
看來,必須有一個更好的辦法,因爲這已經是相當繁瑣的維護,如果有涉及到多個處理程序。
這正是它在_child_方面完成的方式(否則我將如何能夠聽到父控制器中的子事件) – shylent
啊,我想現在我明白了。你想排序聽一個孩子的事件完成。這是針對angular2指南的。數據下降,事件上升..更好的是使用服務,並在那裏設置一個「EventEmitter」。讓你的父組件聽取它,並讓你的子組件在那裏處理任何事 – PierreDuc
不,對不起,它與「完成」任何事情無關。也許,我選擇了一個不好的(暗示性的)名字。我編輯了這個問題,遺漏了「完成」一詞。這只是一些事件,是由兒童控制器發出的,沒有特別的意義。 – shylent