2016-04-05 12 views
0

私は私のアプリでは、このようなデータを持っている:フィルタで特定の値を表示するにはどうすればよいですか?

birthdayGreetings:Array<any> = [ 
    { 
     name: 'John', 
     date: new Date(1994, 3, 19), 
     greeting: 'Happy Birthday, John! Good luck!', 
     displayName: false 
    } 
]; 

私はそれが日付だときのみ名を表示する必要があるが、この週にあるので、私はこれを行う:

export class ThisWeekPipe { 

transform(myArr) { 

    var result = myArr.filter(
     item => { 
      var day = item.date.getDate(); 
      if(day >= 4 && day <= 10) { 
       item.displayName = true; 
       return true; 
      } 
     } 
    ); 

    return result; 
    } 
} 

しかし、私はいつも同じ結果を得ます(そのフィルターでOKである配列のわずか要素)

ここ

がHTMLである:

<ul> 
    <li *ngFor="#manBirthday of birthdayGreetings | thisWeekPipe"> 
      {{ manBirthday }} 
    </li> 
</ul> 

どうすれば正しいことができますか?あなたはこの方法あなたのパイプを更新することができ、あなたに

+2

マップと一緒にフィルタを使用できます。 'myArr.filter(...)。map(i => return i.name)' – Abdulrahman

答えて

2

ありがとう:

@Pipe({ 
    name: 'thisWeekPipe' 
}) 
export class ThisWeekPipe { 
    transform(myArr) { 
    return myArr.filter(item => { 
     var day = item.date.getDate(); 
     return (day >= 4 && day <= 10); 
    }).map(item => item.name); 
    } 
} 

あなたが最初の日付基準に一致する要素のみを取得してからのみnameプロパティを使用してリストをフィルタリングします。この方法では、ngForループに表示する名前のリストしか取得できません。

このplunkr:https://plnkr.co/edit/6VHtFp4zvvMdm3rXbFOP?p=previewを参照してください。

+0

そして、誕生日が今日に追加されているかどうかを挨拶のプロパティを返す必要がある場合はどうすればよいですか?地図を1つ追加する必要がありますか?ありがとうございました – weratius

関連する問題