2016-11-25 11 views
2

Angular2のコンポーネントをRxJで開発しています。これはRxJsの私の第一歩であり、私はRxJsの使い方に関する賛否両論を議論しています。Subscribe/Unsubscribe VS Create/TakeUntil?

コンポーネントはテキストボックスに基づいています。テキストボックスがパッシブで、フォーカスが外れている場合、テキストボックスに情報が表示されます。ユーザーがクリックすると、テキストボックスにフォーカスが置かれ、その下にツールチップが表示され、ユーザーがテキストを編集している間に情報を表示します。

各KeyUpで、テキストボックスの値が処理され、複数のビジネスルールが検証され、ポップアップが更新されてユーザーにフィードバックが与えられます。

検証は、debounceTimeおよびdistinctUntilChangedを使用してキーアップ上の監視対象のサブスクリプションとして処理されます。

ユーザがテキストボックスをクリックしたときに「開始編集」、ユーザがENTER、ESCAPE、TABを押すか、コントロールをクリックしたときに「終了編集」という2つのイベントが利用可能です。

このようなコントロールが20個以上あることを考慮すると、キーアップのサブスクリプションを管理するベストプラクティスは何ですか?例:

  1. たびにObservable.fromEvent(「keyUpイベント」)のように、keyUpイベントにサブスクリプションを作成し、トリガーやパラメータなどのイベントを「編集終了」と演算子「takeUntil」を追加された「編集を開始しますか」?
  2. 「編集開始」がトリガされるたびに、編集を開始するたびに、「終了編集」が行われたときにサブスクライブして、登録を解除するたびに、観察可能な場所を保持しますか?
  3. AまたはBには大きな違いはありません
  4. 他の提案はありますか?

ありがとうございました! セバスチャン

+0

コードは1000語に相当します。 – estus

答えて

0

私はこのようなものだろう:あなたはwindowオペレータhereの詳細を読むことができます

onKeyUpObservable 
    .window(
     startEditingObservable, 
     function() { return endEditingObservable; } 
    ) 
    .subscribe(keyUpEvent => { 
     // Here you will get key up events that happen between 
     // start editing and end editing... 
    }); 

を。