0
私が部品を持っている、と呼ばれています。コンポーネントメソッドから観測可能作成し、それを次のようになり、イベントハンドラ
クリック、ブラーなどの "ネイティブ" 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を設定する方がよいでしょう。あなたの親コンポーネントにそれを聞かせて、あなたのchildComponentがそこで扱うものを何でも入れてください。 – PierreDuc
いいえ、申し訳ありません、それは何か「仕上げ」とは関係ありません。おそらく、私はイベントの悪い(示唆的な)名前を選択しました。私は「仕上げ」という言葉を省くために質問を編集しました。それは特別な意味を持たない子コントローラによって放出されるちょうどイベントです。 – shylent