1

私は以下のAngular2アプリケーションの構造を持っています。 app.htmlファイルAngular2:兄弟コンポーネント間の通信

<search></search> 
<search-results></search-results> 

SearchComponentとSearchResultsComponentの両方が別々のコンポーネントであるインサイド

.... 
    <input type="text" class="form-control" id="input" 
     [(ngModel)]="model.input" name="input" #ipnut="ngModel"> 
    </div> 
    <button type="submit" class="btn btn-primary">Search</button> 
.... 
問題:どのようなものですが、私もそうのように、私は、入力フィールドやボタンでテンプレートを持っているSearchComponentの内部

サービスファイル内

以下

.... 
    getFilteredData(input:string): Observable <any>{ 
    return this.http.get(`${this.URL}${input}&api_key=DEMO_KEY`) 
     .map(response => response.json()) 
     .catch((error:any) => Observable.throw(error.json().error || 'server error')); 
    } 
.... 

ようなサービスを持っていますサービスを実行して結果をSearchResultsComponentに渡す最も良い方法は? Observable getFilteredDataを購読する必要があることはわかっていますが、検索自体を開始するにはどうすればいいですか(つまり、ボタンをクリックするとフォーム入力からサービスにデータを渡します)

+0

もう少し文脈が役立つでしょう。私は実際の問題が何であるか把握できません。 –

答えて

0

マスターサービスを作成します検索および検索結果コンポーネントの両方によって)。

このサービスの内部には、件名(行動主題または再生主題)を作成します。

検索コンポーネントでこのSubjectを使用すると、このケースの検索ワードのデータが出力されます。

検索結果コンポーネントでこのサブジェクトを購読し、成功した場合は、Subjectをサブスクライブして得たsearch-wordをパラメータとするgetFilteredData関数を呼び出します。

こちらがお役に立てば幸いです。

関連する問題