2016-11-10 5 views
2

* ngForは親テンプレートから子テンプレートを繰り返すのに使われていて、それも子テンプレート自体の中で使われているのを見たことがあります。これらのどちらかが優先されるべき状況はありますか?* ngForはテンプレートによって内部的に使用されるべきか、または外部で使用されるべきですか?

<div class="results"> 
    <app-result-tile 
    *ngFor="let d of service.data" 
    [data]="d"> 
    </app-property-tile> 
</div> 

<app-result-tile>コンポーネントにngForを移動する必要がありますか?

<div class="results"> 
    <app-result-tiles 
    [data]="service.data"> <!-- results now repeat internally with li's or something.--> 
    </app-result-tiles> 
</div> 

親コンポーネントから結果コンポーネントをフィルタリングするパイプを作成します。この場合、最初の方法を使用する方が理にかなっていますか?

+0

は、service.dataまたはすべてのservice.dataを処理するために必要なものに属します。たぶん、あなたは最初の方法で使用する必要があるので、service.dataのすべてで働いている子テンプレートだけを使うかもしれません。 –

答えて

1

ここでの質問は、反復アイテムが別のコンポーネントかどうかです。

反復されたアイテムが単独で使用される場合、答えはYESです。

いつでも例外なく、いつでも将来でも、それ自体ではなく常にリスト内で使用される場合は、ngFor *を子コンポーネント内で使用する必要があります。

ngForにパイプフィルタリングがあるかどうかは関係ありません。

+0

私の唯一の懸念はろ過のパフォーマンスでしたが、考慮すべき他の問題があるかどうかはわかりませんでした。私を助ける時間をとってくれてありがとう。 – JordanFrankfurt

3

両方が有効です。それはあなたのユースケースによって異なります。

前者の場合はapp-result-tilesという異なるインスタンスが作成され、関連するテンプレートの数も同様に作成されますが、後でコンポーネントとテンプレートのインスタンスが1つ作成されます。

+0

状況をよりよく説明するために質問を編集しました。私のフィルタ基準は親コンポーネントから来ているので、私は最初のパターンを好むべきですか? – JordanFrankfurt

関連する問題