2017-04-09 15 views
0

を通じてコン​​ポーネントと通信するには? (scrolledDown) 多分私はイベントを集約するための一般的なサービスを実装する必要がありますか?どのように私は、次のものを持って、角2ルータ

以前はローカル変数を使用しましたが、ルーティングを統合すると状況が変わりました。

ありがとうございました!あなたはあなたがそれを必要な場所にこのサービスを注入する必要がある

export class ScrollService { 
    subject: Subject; 
    constructor() { 
     this.subject = new Subject(); 
    } 
    setScroll(newY: number) { 
     this.subject.next(number); 
    } 

    registerScroll(): Observable<number> { 
     return this.subject.asObservable(); 
    } 
} 

+0

それはすべての必要な情報は公式のdocsにalredyであることが判明:[サービスを介して通信](https://angular.io/docs/ts/latest/cookbook/component-communication.html#bidirectional-service) – user3752919

答えて

1

あなたは、スクロールサービスを使用することができます。 setScroll()によって、すべてのサブスクライバに新しいスクロールが送信されます。 すべての消費者はregisterScroll()を購読して送信することができます。

+1

ありがとうあなたは@Aviです! 'Subject'と' EventEmitter'の違いは何ですか? – user3752919

+1

良い質問ですが、EventEmitterはSubjectを継承しています。カスタムイベントを出力するためにディレクティブとコンポーネントによって使用されます。 – Avi

関連する問題