2016-10-03 1 views
1

私はangle2-highchartsを使用するAngular 2アプリを持っています。 ハイチャートのjsonからデータを取得しますが、開始日と終了日までにチャートでどのデータを使用するかをフィルタにしたいと思います。 誰かがこの質問で私を助けたり、チュートリアルやそれに関する情報を見つけるためのリンクを教えてくれますか?datepickerからの日付のフィルタjsonデータAngular2 app

私はmydaterangepickerを使用して、JSONからデータを取得するためのサービスがあります:

@Injectable() 
export class ValuesService { 

    http: Http; 
    constructor(http: Http) { 
     this.http = http; 
    } 

    getValues(beginDate: Date, endDate: Date): 
     Observable<Values> { 
     return this.http.get('http://localhost:54122/api/ProductionValues/GetProductionValuesDATETIME?startDate=' + beginDate +'&endDate=' + endDate) 
      .map(this.extractData) 
      .catch(this.handleError) 
    } 

    private extractData(res: Response) { 
     let body = res.json(); 
     return body || {}; 
    } 

    private handleError(error: any) { 
     // // In a real world app, we might use a remote logging infrastructure 
     // // We'd also dig deeper into the error to get a better message 
     let errMsg = (error.message) ? error.message : 
      error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
     console.error(errMsg); // log to console instead 
     return Observable.throw(errMsg); 
} 
+0

これはangular2についての質問ですか、範囲パラメータをサーバーapiに渡すため、おそらくあなたはそこでフィルタリングを処理する必要がありますか? –

+0

datepickerで日付範囲を選択したい – Marko

+0

サーバーがこれを処理し、これらのパラメータを受け入れ、それらの値のみを返すか、すべてのデータを返し、クライアント側でフィルタリングする必要があります(良い選択肢ではありません)。 APIごとに、サーバーはフィルタリングされたデータを返す必要があります。 – Manish

答えて

0

問題は、文字列として返しますres.json()日付です。

.map(res => { 
      let jsonData = res.json(); 
      for (let obj of jsonData) { 
       for (let prop in obj) { 
        if (moment(obj[prop], moment.ISO_8601).isValid()) { 
         obj[prop] = new Date(obj[prop]); 
        } 
       } 
      } 
      return jsonData; 
     }) 

基本的に、これは文字列の代わりに実際の日付オブジェクトに有効なフォーマットのいずれかの文字列を変換するためにmomentjsを使用しています。私はこのような何かを見て私のアプリで通話を取得し、HTTPのための私のマッピングを変更することになりました。サーバーからデータが返される方法に応じて、formatパラメーターを変更する必要があります。

また、この作業を行うには、プロジェクトでnpm install moment、コンポーネントでimport * as moment from 'moment';を実行する必要があります。

関連する問題