2017-03-21 19 views
2

私のアプリケーションには/ search/criteriaと/ search/resultsという2つのルートがあります。角度2 - ルート間のデータの受け渡し

検索基準コンポーネントでは、ユーザーが検索条件を満たして検索ボタンをクリックします。このボタンは関数(onSearch)を呼び出し、フォームの値は入力として渡されます。その後、ユーザーを検索結果コンポーネントにルーティングします。

onSearch(formValues) { 
console.log(formValues); 
this.router.navigate(['/search/results']); 
} 

formValues(ユーザーが入力した検索基準を含むJavascriptオブジェクト)を検索結果コンポーネントに渡すにはどうすればよいですか?検索結果コンポーネントでは、(サービスを使用して)検索を実行し、その結果をユーザーにグリッドで表示します。

サービスで検索が実行されるため、このサービスをonSearchメソッドから呼び出すこともできます。しかし、問題は検索結果コンポーネントに結果を渡す(グリッド内でレンダリングできるようにする)ことです。

もっと良い方法はありますか?

+1

[角度2:異なるルート間でデータを共有する]の可能な複製(https://stackoverflow.com/questions/38892496/angular-2-sharing-data-across-differentroute) –

答えて

0

は、私はあなたが検索条件コンポーネントに必要な、その後、ちょうどからデータを抽出したデータを格納DataStorageServiceのようなものを作成することをお勧め:

あなたはここから共有サービスを使用する方法のアイデアを得ることができますあなたがそれを必要とするサービス。これは単純な例である。もちろん

import { Injectable } from "@angular/core"; 

@Injectable() 
export class DataStorageService { 
    public storage: any; 

    get isEmpty(): boolean { 
     return this.storage === null || this.storage === undefined; 
    } 

    constructor() {} 
} 

と、あなたが本当にサービスにデータを保存する方法を決定する必要があります。

あなたのサービスでは、例えば次のようなものを見ることができます。

関連する問題