2017-05-26 19 views
0

私はANgular 2アプリケーションを開発中です。角2 - コンポーネントを呼び出す

私はhome.component.tsにある小さなフォームを持っています。これは以下のようになります。 enter image description here

ユーザーが[送信]ボタンをクリックするとデータテーブルには、一致する結果がロードされている必要があります。以下のように。これはhome.componentからresult.componentを呼び出すための最善のアプローチは何異なるコンポーネントresult.component.ts

enter image description here

のですか? 最初のコンポーネントは、結果のデータセットを2番目のコンポーネントに渡す必要があります。

+2

https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-子供に – echonax

+0

私はこれを通過します。ありがとう@echonax –

+0

datatableは 'home.component'と同じコンポーネントにありますか? Datatableはどのように新しい結果をロードしますか?すべてのデータがロードされ、フィルタリングされていますか?またはサーバーへの 'http'呼び出しを呼び出して新しい結果を取得するのでしょうか? – CozyAzure

答えて

0

あなたは@Componentディレクティブで定義されているそのセレクタにより、結果を表示して@Inputを経由して、結果を渡すことができます。

result.component.ts

@Component({ 
    selector: 'search-result', 
    teplateUrl: './result.component.html' 
}) 
export class ResultComponent { 
    @Input() result: Result; 
} 

家。 component.ts

export class HomeComponent { 
    searchString: string; 
    result: Result; 

    performSearch(searchString: string) { 
    // perform API call here and save result to this.result 
    } 
} 

home.componen

<label for="q"><strong>Territory:</strong></label><br> 
<input type="text" name="q" ([ngModel])="searchString"><br> 
<button (click)="performSearch(searchString)">Search</button> 
Result: 
<search-result result="result"></search-result> 

result.component.html t.html

<table> 
    <tr *ngFor="let item of result"> 
    <td>{{ item }} 
    </tr> 
</table> 
関連する問題