2016-12-02 9 views
0

私はangular2アプリで観測可能なデータを持っています。データには2つのプロパティがありますsubscribe on条件内でコードを実行

{isFetching: false, user: {userID: 1, firstName: "john", lastName: "public"} }. 

サーバーisFetchingフラグからデータが取得され、ユーザーオブジェクトがnullの場合。私のコンポーネントの1つでは、observableオブジェクトにあるuserIDによって他のデータを取得する必要があります。最初にobservableがsubscribeされているときに、userオブジェクトはnullです。私のコードでは、ユーザーが他のアクションを実行する前にnullかどうかを確認する必要があります。以下のコードは動作しますが、サブスクリプションブロック内に条件がある場合よりも良い方法があると思います。

this.store.select<UserProfileState>('user') 
     .subscribe(user => { 
      if (!user.isFetching) { 
       this.store.dispatch(this.informationPanelActions.loadInformationPanel(user.user.clientID, user.user.userID)); 
      } 
     }); 

助けていただければ幸いです。

答えて

3

あなたが観察可能で作業しているとして、あなたは、フィルタを使用することができます。

this.store.select<UserProfileState>('user') 
    .filter(user => !user.isFetching) 
    .subscribe(user => { 
     this.store.dispatch(this.informationPanelActions.loadInformationPanel(user.user.clientID, user.user.userID)); 
    }); 
+0

が働いていること、ありがとうございます! – Yousuf

関連する問題