2017-12-08 2 views
0

私のcomponent.tsには、サービスからデータを返し、myPostsオブジェクトに保存する関数があります。この関数はgetData()と呼ばれます。 私がやってみたいのは、ngOnInit()でgetDataを呼び出す前に、最初にgetDataを日付でフィルタリングすることです。返されたデータをngOnInitでフィルタリングしました

最初は私のテーブルにすべての月の投稿が表示されます。 そして、別の関数の日付を変更し、さまざまな範囲でフィルタを適用できるはずです。

マイフィルタ機能はコントローラにあります。 最初にそのデータがngOnInitでフィルタリングされるように、データを取得した後でフィルタ関数を呼び出すにはどうすればよいですか?

public getData() { 
this.postsService.getAllPosts().subscribe(results => { 
    this.myPosts= results['data'];  
}); 
} 

filterByDate(){ 
    const monthAgo= moment().subtract(1, 'month'); 
    this.myPosts= this.myPosts.filter(item => moment(item.SubmittedDate).isAfter(monthAgo)); 
} 

答えて

0

コンストラクタでgetData()メソッドを呼び出し、その関数を使用し

public getData() { 
this.postsService.getAllPosts().subscribe(results => { 
    this.myPosts= this.filterByDate(results['data']);  
}); 
} 
+0

ありがとうございます。しかし、私はこのデータを最初に返されるようにどこから呼び出すのですか? 現在、ngOnInitにあるgetData()を呼び出します。 –

+0

私の更新された回答を確認してください – Aravind

+0

MyPostsはフィルタリングされた結果を持つでしょう、はい。しかし、その後、ユーザーが表示される日付の範囲を変更する場合は? ngModelChangeでfilterByDateを呼び出し、myPostsを入力として与えません。 私は2つの別々の機能を使用しなければならないと思います。 –

0

、あなたのOnInit機能で

filterByDate(myPosts){ 
    const monthAgo= moment().subtract(1, 'month'); 
    return myPosts.filter(item => moment(item.SubmittedDate).isAfter(monthAgo)); 
} 

をフィルタリングして、以下のようにデータを割り当てるための方法を作成し、 ngOnInItのフィルタ機能filterByDate()を使用します。

export class SomeClass implements OnInIt { 
     public getData() { 
     this.postsService.getAllPosts().subscribe(results => { 
      this.myPosts = this.filterByDate(results['data']); 
     });    
     } 
     public filterByDate(myPosts){ 
      const monthAgo = moment().subtract(1, 'month'); 
      return myPosts.filter(item => 
      moment(item.SubmittedDate).isAfter(monthAgo)); 
     } 
     constructor() { 
     this.posts = this.getData(); 
     } 
     ngOnInIt() { 
     this.filterPosts = this.filterByDate(posts); 
     } 
    } 
+0

私は混乱しています。 myPostsを関数の入力パラメータとして与える必要がありますか?それらはコントローラで宣言されています。 問題は、ngModelChangeで呼び出されるfilterByDate(startDate、endDate、lastMonth)を持つことです。 lastmonth == trueの場合、先月フィルタリングします。 フィルタリングする日付の範囲をユーザーが選択したときに、同じ関数を使用できるようにするためです。 しかし、私は最初の結果がすでに先月にフィルタリングされる問題がありました。 –

関連する問題