2017-04-06 26 views
2

私はRxjsとAngular 4をかなり新しくしています。角4 - イベントを観測可能なストリームに変換する

テンプレート:

<div class="btn-group cp"> 
    <input [colorPicker]="bgColor" 
    (colorPickerChange)="colorChanged()" 
    [style.background]="bgColor"> 
</div> 

colorChangedは、()のMouseMoveにcolorPickerChnageによって呼び出されます。私は私のコンポーネントでこのような何かをしたい:

colorChanged$.subscribe(data => console.log(data)) 

(それは私が観察できるようにそれを持っているしたい理由です、いくつかのデバウンスおよびより多くの加入者を持つことになります。)

+0

あなたは 'EventEmitter'に加入し、いずれかの関数から自身を発したりするためにHostListener''のようなものを使用することができます 'あなたのコンポーネントのmousemove'イベントです。 – Dylan

答えて

3

私はそれを解決しました。

テンプレート:

<div class="btn-group cp"> 
    <input [colorPicker]="bgColor" 
    (colorPickerChange)="colorChanged(bgColor)" 
    [style.background]="bgColor"> 
</div> 

そしてコンポーネントで:

import { Subject } from 'rxjs'; 

    colorChanged$ = new Subject<string>(); 

    colorChanged(bgColor) { 
    this.colorChanged$.next(bgColor) 
    } 

    ngOnInit() { 
    this.colorChanged$.subscribe(v => console.log(v)); 
    } 
+2

これは機能しますが、これは "Rx"のやり方ではありません。 Ben Leshの記事を読む:[被験者のテーマ(RxJSで)](https://medium.com/@benlesh/on-the-subject-of-subjects-in-rxjs-2b08b7198b93) – wood1y

+0

おそらくObservable.fromEvent(event.target、 'event type')を使用してください これを見てください - [link](https://www.learnrxjs.io/operators/creation/fromevent.html) – Awadhoot

+0

event.targetとは何でしょうか?この場合、fromEventをcolorPickerChangeにどのように接続しますか? fromEventの例は、最も基本的な使用例、ドキュメント上のクリックイベントのみを示し、DOMイベントに依存するのは「角度」の方法ではありません。 –

関連する問題