2016-09-08 16 views
2

私はツアーの完全なリストを示すToursというコンポーネントを持っています。 私はお気に入りと呼ばれるサイトへのリンクを持っています。お気に入りのパラメータをtrueに設定してツアーを表示する必要があります。角度2で配列をフィルタリングするためのベストプラクティス

これを達成するためのベストプラクティスはありますか? 私はルート・パス

に基づいてトリガーのカスタムパイプを作成し、ルート

  • の値に基づいて、このコンポーネントとフィルタとは別のルートを作成します

    1. いくつかの方法を考えることができますしかし、どちらも最適ではないと思われます。

  • 答えて

    3

    私は特にあなたのような場合にはfilter関数を独占的に使用します。

    this.tours.filter((item) => { 
          return (item.favorite === true) 
         }) 
    

    それとも、favoriteパラメータでfilter機能を望んでいた場合、あなたはこれを行うことができます::

    filterFavorites(favorite : boolean): Array<string>{ 
         return tours.filter((item) => { 
          return (favorite)? item : null; 
         }) 
    } 
    
    を使用すると、各反復で favoriteプロパティを持つツアーの配列を持っている場合、あなたはこれを行うことができます

    これがあなたに役立つかどうか教えてください。

    編集:あなたは間違いなくパイプを作ることができますが、あなたが他の場所でパイプを何度も使用するつもりでない限り、あなたのケースでは過剰なものになると思います。

    +1

    これは意味があります。私はデータセットを観測値として受け取り、サブスクライブを使用してローカル値に設定します(つまり、result.subscribe(res => this.locations = result) このデータをNgOnInitでフィルタリングしようとすると、データとして空の配列が取得されますまだロードされていません。それをどう扱うか考えてください。 – user3642173

    +0

    サブスクライブ関数内でフィルタリングを試みることができます。 .filter ...(etc)) ' – jhhoff02

    +0

    これは技術的には機能しますが、コード内の別のフィールドから購読したいフィールドを取得します。しかし、私は単純なマップ関数とconsole.log location.likeが正しく設定されていると書いたとき これは私の完全なスクリプトです:{ location.like = af.database.object( '/ trips ') .map((locations))=> { return locations.map(場所)=> { location.like = af.database.object/likes/$ {this.uid}/$ {location。$ key} '); 戻り場所。 }) }); – user3642173

    関連する問題